
C++零散笔记
npjtwy
这个作者很懒,什么都没留下…
展开
-
使用lambda输出容器元素
头文件 iterator algorithmcopy(ivec.begin(), ivec.end(), std::ostream_iterator<string>(std::cout, " "));原创 2016-10-24 19:44:31 · 450 阅读 · 0 评论 -
右值和左值,右值引用和左值引用
右值和左值左值右值的形式区分(或者称语法区分)是能否用取地址&运算符;语义区分(即其本质涵义)在于表达式代表的是持久对象还是临时对象。 当一个对象被用作右值的时候,用的是对象的值(内容),当对象被用作左值的时候,用的是对象的身份(在内存中的位置) ——CppPrimer, 5th返回左值的有:赋值运算符需要一个(非常量)左值作为其左侧运算对象,得到的结果也是一个左值取地址作用于一个左值运算原创 2016-10-25 12:13:35 · 1043 阅读 · 0 评论 -
参数绑定bind
bind函数 定义在头文件functional中当某算法只接受单一参数,而我们需要多个参数来解决问题时要用到参数绑定。 如: 假如我们想找到容器中string长度大于5的元素时定义一个比较函数: bool check_size(const string &s, string::size_type sz){ return s.size() >= sz;}但是find_if第三个参原创 2016-10-25 12:34:02 · 658 阅读 · 0 评论 -
C++中的可调用对象
c++中的可调用对象有以下几种:函数函数指针bind创建的对象lambda表达式重载函数调用运算符的类函数对象都可以在使用算法时作为谓词来调用lambda表达式[capture list] (parameter list) -> return type { function body }capture 是一个lambda表达式所在函数中定义的局部变量列表,可以捕获使用,可以通过加上 &原创 2016-10-25 15:21:23 · 688 阅读 · 0 评论 -
LINK2005错误
错误一: 在头文件中,类外面定义成员函数没有加 inline 关键字 并且在 .CPP 文件中包含了头文件。class Query{public: Query(const std::string&); //创建一个新的 WordQuery 对象private: Query(std::shared_ptr<Query_base> query) : q(query)原创 2016-11-30 01:17:28 · 613 阅读 · 0 评论 -
将重载运算符定义为成员函数还是普通的非成员函数
● 赋值 = 、下标[ ]、调用( )、和成员访问箭头 ->必须是成员函数 ● 符合符合赋值运算符应该是成员,但是并非必须 ● 改变对象状态的运算符或者与给定类型密切相关的运算符,如 递增、递减和解引用运算符应该 是成员 ● 具有对称性的运算符可能转换任一端的运算对象,例如算数、相等性、关系和位运算符等,因此通常应该是普通的非成员函数。举例:原创 2016-10-25 12:17:02 · 2882 阅读 · 0 评论 -
模板类中包含模板类友元和其他友元函数
发表一点自己对 《C++ Primer 5th》模板那块的理解, 欢迎指正一对一友好关系在类模板与另一个模板(模板类或模板函数)间建立对应实例及其友好关系,为了在类模板中引用另一个类模板或函数的一个特定实例,必须先声明另一个模板: 方便理解和叙述,将含友元的类称为主类,将要做友元类的模板类称为客类//为了在类里面引用 BlobPtr<T> 和 poerator==<T> 现在类之前声明templ原创 2017-05-03 22:02:29 · 2838 阅读 · 0 评论 -
成员访问(->)操作符的重载
源地址:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28662931&id=3498450(参考了C++primer) 箭头(->)操作符,看起来很像二元操作符,左操作数是类对象,右操作数是类成员,即使如此,箭头操作符的重载函数是没有第二个形参的(第一个是隐含形参this),理解起来有点难度; 函数转载 2017-05-04 16:01:43 · 2265 阅读 · 0 评论 -
C++11多线程学习小结
关于c++11 多线程的一些小结, 内容基本上是自己看书的笔记。 详细内容还需参考cppreference.com过程中参考了这篇博文,和 这篇博文async 和 futureasyncasync 在后台启动一个异步执行的任务 通常和 future 一起使用std::async(launch, function, arg ...) - launch 发射策略 - function 是一个可调用对原创 2017-06-01 22:48:07 · 981 阅读 · 1 评论