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

网站做防御wordpress 修改链接

网站做防御,wordpress 修改链接,葛洲坝机电建设有限公司网站,网站开发设置用户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/783735/

相关文章:

  • 国外网站推广服务电子商务网站建设内涵
  • 如何用网页设计制作个人网站网络维护是什么工作
  • 网站的备案流程图百度地图怎么放在网站上
  • 注册的空间网站wordpress 缓存下不计数
  • .top和网站东莞关键词自动排名
  • 用vs2015做网站手机网站建设软件有哪些方面
  • 我们做网站 老公弟弟也跟着做中国建设工程网官网查询
  • 深圳正规做网站的公司百度搜索引擎地址
  • 做海外网站交税吗网站开发人员的工资
  • 网站站群重庆做的好的房产网站好
  • 做音乐创作的网站用代码做网站
  • 全景校园网站开发做网站好赚钱吗
  • 只做网站的供需平台类网站建设
  • 南宁购物网站建设做类似淘宝的网站前景
  • 邯郸建设企业网站珠海响应式网站制作
  • 最好的网页设计网站mc做弊端网站
  • 手机网站样式代码phpstudy搭建本地网站
  • 网页设计类网站wordpress用户中心主题
  • 网站用哪些系统做的好处会员制网站建设
  • 免费广告推广网站重庆网上房地产官网查询备案价
  • 网站图片设置4:3html5静态网页设计
  • 网站因为备案关闭了 怎么办有什么办法可以在备案期间网站不影响seo
  • 有了源码怎么搭建网站深圳住房建筑网站
  • 电商网站建设 猪八戒网本地安装wordpress账户是什么
  • 福州网站建设企业网站关键词优化步骤
  • 做网站乱码广州个人网页制作
  • 网站产品功能的重要性邢台建设企业网站
  • 医院网站建设策划书wordpress 文章不显示
  • 网站前台如何做访问量显示休闲文化网站
  • 百度指数怎么用搜索引擎排名优化是什么意思