当前位置: 首页 > news >正文

织梦大气婚纱影楼网站源码网站可以几个服务器

织梦大气婚纱影楼网站源码,网站可以几个服务器,网站建设和维护需要学的东西,ftp上传网站C98里面的可调用对象只有普通函数和函数指针。 而在C11里面可调用的对象有下面几种: 普通函数函数指针仿函数lambda表达式(匿名函数)包装器 普通函数、函数指针、仿函数、lambda表达式我在以前的文章里其实已经介绍过了 包装器 在C11里面有…

C++98里面的可调用对象只有普通函数和函数指针。
而在C++11里面可调用的对象有下面几种:

  • 普通函数
  • 函数指针
  • 仿函数
  • lambda表达式(匿名函数)
  • 包装器
    普通函数、函数指针、仿函数、lambda表达式我在以前的文章里其实已经介绍过了

包装器

在C++11里面有多种类型的可调用对象,包装器可以将这些对象包装起来,给我们提供一个统一的视角。相当于给外面再套了一层盒子。

包装器的定义

//1
template <class T> function;     // undefined
//2
template <class Ret, class... Args> 
class function<Ret(Args...)>;

它的定义貌似很奇怪,包装器提供了模板,2是1的特化,Ret指出可调用对象的返回值类型,并且给我们提供了可变参数,用一个省略号...指出模板参数或函数参数是一个包。
function包含在头文件<functional>里面,而且在std域里
包装方式:function<返回类型(参数类型1,参数类型2,...., 参数类型n)> name = 可调用对象
使用方式:name(参数1, 参数2, ...,参数n)


使用方式类似于函数
例一:包装普通函数

#include <iostream>
#include <functional>
using namespace std;int f(int x, int y)
{return x - y;
}
int main(void)
{//用包装器包装起来function<int(int, int)> f1 = f;cout << f1(2, 1) << endl;return 0;
}

例二:包装lambda表达式

	//包装可调用对象lambda表达式function<int(char, char, char)> f2 = [](char e1, char e2, char e3)mutable->int{return e1 - e2 + e3;};cout << f2('z', 'a', 'x') << endl;

例三:包装仿函数

class Student
{
public://重载(),仿函数char operator()(string str){return str[0];}
};//包装可调用对象,仿函数function<char(string)> f3 = Student();cout << f3("hello") << endl;

在某些情况下我们可能需要提供一个统一的接口来接收这些类型,就需要使用到包装器。
包装器一般会和std::bind结合使用

std::bind

std::bind在包装器中有如下作用
作用1:调整参数顺序
作用2:调整参数个数

simple(1)	
template <class Fn, class... Args>
bind (Fn&& fn, Args&&... args);with return type (2)	
template <class Ret, class Fn, class... Args>
bind (Fn&& fn, Args&&... args);

bind在包装器里面的作用简单来说就是利用旧的可调用对象创建了一个新的。第一个参数是一个万能引用,用来接收可调用对象,而它使用后面的参数包指明新对象的函数参数。

int f(int x, int y)
{return x - y;
}//用包装器包装起来function<int(int, int)> f1 = f; //普通函数cout << f1(2, 1) << endl;//使用bindfunction<int(int, int)> ff1 = bind(f, placeholders::_1, placeholders::_2);cout << ff1(2, 1);

在使用std::bind的时候,使用placeholders::_n指明旧的可调用对象的参数,n对应参数在原来的参数列表里是第几个。这里的placeholders::_1指的就是x。

那么我们可以利用bind来调整参数的顺序

function<int(int, int)> ff1 = bind(f, placeholders::_2, placeholders::_1);

一些特定情况下,某个参数的值是固定的。调整参数的个数,实际上调整的是bind新创建对象的参数。

	function<int(int)> f4 = bind(f, 95, placeholders::_1);cout << f4(12) << endl;

对于对象f来说,它调用的时候需要两个int类型的参数。当我们进行如上操作的时候,将第一个参数固定成了95,调用的时候,就只需要传递一个参数就可以。
使用bind调整参数个数时需要注意

  • 如果想要固定某一个参数,在bind的时候需要指明
  • 指明以后,placeholders::_X,这个X从旧可调用对象的下一个参数开始算起。
  • function也需要做相应的改变,实例化的时候,用bind固定的参数类型不需要再写进来。
http://www.yayakq.cn/news/231320/

相关文章:

  • 工商企业信息查询网站中国联通腾讯
  • 柯桥区建设集团网站网站建设网银开通
  • 帝国cms门户网站模板广东省人防工程建设网站
  • 国外idc网站江苏强荣建设有限公司 网站
  • 营销网站建设的规则怎么更改网站域名
  • 怎么办网站如何创建一个官网
  • 医生工作室网站建设安徽工程建设信息网实名制查询
  • 西宁高端网站制作公司天津房价
  • 建设营销网站网站建设专业就业前景
  • 做基因检测网站24小时自助平台业务下单
  • 辽宁网站建设企业网站汇总表怎么做
  • 去年做啥网站能致富成都网站设计推荐柚米
  • 网站建设用的什么语言新区网站建设
  • 外贸自建站平台排名跨境电商最好的平台
  • 旅游公司网站模板邯郸做网站费用
  • net大规模网站开发视频做物流网站的公司吗
  • 汉中网站建设wps wordpress
  • wordpress网站编辑电商怎么入门
  • 动图从哪个网站做WordPress主题(模板)制作教程
  • 做网站虚拟主机多少钱百度seo运营工作内容
  • 佛山网站建设官网logo设计说明
  • 湖南手机版建站系统哪家好山东seo网络营销推广
  • 营销网站的特征网架公司和网架加工厂的区别
  • 广东省公路建设公司网站郑州短视频拍摄公司
  • 抖音网站建设哪家好佛山做企业网站公司
  • 徐州高端模板建站手机网站制作招聘
  • 泰安网站建设焦点网络怎样制作3d立体效果图
  • 网站改版总结公众号推文模板免费
  • 克拉玛依网站建设公司搜索引擎官网
  • 重庆有没有做网站的iis7配置asp网站