C++11
文章平均质量分 74
C++11的语法糖
边缘计算机
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++11异步编程
线程同步是线程间共享数据在访问时的同步。 同步 同步:在调用后没有得到结果,该调用就不返回。一旦调用返回,就意味得到了返回值。由调用者等待调用的结果。 异步 异步:调用后立即返回了,不等待返回结果。由被调用者在得到结果后,通知调用者(回调函数,等)处理这个调用。 异步编程 在线程库< thread >中没有获得线程执行结果的方法 虽然也实现了获取异步任务执行结果的功能,但需要的全局变量较多,多线程间的耦合度较高,编写复杂程序时容易引入bug。有没有更好的方式实现异步编程呢?原创 2021-11-04 11:58:16 · 1961 阅读 · 0 评论 -
智能指针指向数组
如果shared_ptr不是指向一个简单的指针,而是指向一个数组: std::shared_ptr<int> p3(new int[12]); 则在shared_ptr默认的析构函数中,shared_ptr还是会调用delete 函数来删除int数组,而正确的方式是使用 delete [] 这种情况下,可以定制析构函数(deleter),将其作为回调传递给shared_ptr的构造函数 。 使用定制deleter创建sharedptr 使用函数指针 在shared_ptr的构...原创 2021-09-01 20:11:25 · 2676 阅读 · 0 评论 -
std::bitset
类似于vector,bitset类是一种类模板;而与vector不一样的是bitset类型对象的区别仅在其长度而不在其类型。在定义bitset时,要明确bitset含有多少位,须在尖括号内给出它的长度值:bitset<32> bitvec; //32位,全为0。 给出的长度值必须是常量表达式。正如这里给出的,长度值必须定义为整型字面值常量或是已用常量值初始化的整数类型的const对象。这条语句把bitvec定义为含有32个位的bitset对象。和vector的元素一样,bitset中的位是没有命原创 2021-06-04 15:36:25 · 1040 阅读 · 0 评论 -
现代C++ 理解右值引用
右值引用是C++11中新增新的引用类型。 右值引用只不过是一种新的 C++ 语法。 基于右值引用,引申出的 2 种 C++ 编程技巧:移动语义和完美转发,难以理解。 引入目的 作用好处 引入右值引用的主要目的是提高程序运行效率。有些对象在复制时需要进行深复制(拷贝),深拷贝往往非常耗时。合理使用右值引用可以避免深复制操作。 右值引用通过减少内存的重复申请、拷贝和释放,有效的提高C++程序的性能。 左值和右值 左值是可寻址的变量;(有名称,能获取其存储地址的实例对象) 右值是不可寻址的字.原创 2020-07-27 20:08:44 · 1100 阅读 · 0 评论 -
关键字 constexpr
constexpr明确定义了编译阶段常量。 在栈上定义的数组,数组的长度必须是一个常量表达式: intayy[17];//正确 int ayy[7 + 4];//正确 int length = 8;int ayy[length]; //错误,length是变量 常量表达式 常量表达式和非常量表达式的计算时机不同: 非常量表达式是在程序运行阶段计算; 常量表达式是在程序的编译阶段计算,这提高了程序的执行效率,节省了每次程序运行时都需要计算一次的时间。 功能 const...原创 2020-07-23 23:02:36 · 415 阅读 · 0 评论 -
自动类型推断 decltype类型推导
decltype是C++11新增的关键字,它和 auto 的功能一样,都用来在编译时期进行自动类型推导。decltype 是“declare type”的缩写,译为“声明类型”。 为什么需要 decltype 关键字 auto并不适用于所有的自动类型推导。 必须对auto声明的类型进行初始化,否则编译器不能推导出auto的实际类型。而有些场景需要根据运行结果进行类型推导。这是auto不能做到的。 decltype(f()) sum = x; sum的类型就是函数f的返回值类型...原创 2020-07-14 14:08:38 · 356 阅读 · 0 评论 -
C++的 lamda函数
lamda被用来表示一种匿名函数。 lamda的概念 以lamda概念为基础的“函数式编程”是与命令式编程、面向对象编程等并列的一种编程泛型。 很多流行的语言都提供了对lamda的支持。C++也不例外。这样C++从基于命令式编程范型的C语言,加入了面向对象编程范型产生的C++,现在又加入了函数式编程范型的lamda新语法。 C++11 lamda函数 lamda历史悠久,具体到C++11里,它的代码和原来C++的代码风格有很大差别。 auto totalFunc = [](int x , in.原创 2020-07-08 23:11:54 · 1146 阅读 · 0 评论
分享