摘要:
C++语言层面多线程=>好处:跨平台 windows/linux thread/mutex/condition_variable lock_gurad/unique_lock atomic/原子类型,基于CAS操作的原子类型 线程安全的 睡眠sleep_for C++ thread => windo 阅读全文
摘要:
既然lambda表达式只能使用在语句中,如果想跨语句使用之前定义好的lambda表达式,怎么办?用什么类型来表示lambda表达式? 用function类型来表示函数对象类型 bind1st/bind2nd bind 绑定器返回的都是 函数对象 lambda表达式=>函数对象 示例1 map<int 阅读全文
摘要:
C++11 函数对象的升级版=>lambda表达式 函数对象的缺点: 使用在泛型算法,参数传递, 比较性质/自定义操作 优先级队列, 需要专门定义出一个类 //lambda表达式语法: //[捕获外部变量](形参列表)->返回值{操作代码} auto func1=[]()->void{cout<<" 阅读全文
摘要:
bind1st和bind2nd只能用于二元函数对象 c++11 bind绑定器 返回的结果还是个函数对象 std::bind函数定义在头文件functional中,是一个函数模板,它就像一个函数适配器,接受一个可调用对象(callable object),生成一个新的可调用对象来“适应”原对象的参数 阅读全文
摘要:
类模版std::function是一种通用、多态的函数封装。std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,这些目标实体包括普通函数、Lambda表达式、函数指针、以及其它函数对象等。std::function对象是对C++中现有的可调用实体的一种类型安全的包 阅读全文
摘要:
std::function是一组函数对象包装类的模板,实现了一个泛型的回调机制。function与函数指针比较相似,优点在于它允许用户在目标的实现上拥有更大的弹性,即目标既可以是普通函数,也可以是函数对象和类的成员函数,而且可以给函数添加状态。 声明一个function时,需要给出所包装的函数对象的 阅读全文
摘要:
模板作为C++泛型编程的基础十分重要,其使得一份代码能用于处理多种数据类型。而有些时候,我们会希望对一些特定的数据类型执行不同的代码,这时就需要使用模板特例化(template specialization)。 函数模板特例化 首先函数模板的特例化并不是函数重载,每一个特例化实际上是提供了另一个模板 阅读全文
摘要:
自己实现绑定器,代码如下 #include <iostream> #include <vector> #include <string> #include <algorithm> #include <functional> #include <ctime> using namespace std; 阅读全文
摘要:
bind用于绑定可调用 (Callable) 对象(函数对象、指向函数指针、到函数引用、指向成员函数指针或指向数据成员指针)和其参数。返回值为绑定成功后的函数对象 C++11中引入的function机制,其中绑定器主要有三种:bind1st、bind2nd、bind(C++11) 函数对象 尽管函数 阅读全文
摘要:
代码1 #include <iostream> #include <thread> using namespace std; class A { public: A() { cout << "A()" << endl; } ~A() { cout << "~A()" << endl; } void 阅读全文