VI 、”为改变思考方式而改变“ 总结: 1、nullptr引入 , 用单一职责思维 , 避免NULL存在指针和整型的二义性 , nullptr_t类型可以进行赋值到指针和进行比较运算(与指针的) 。2、=default恢复编译器默认的函数 , 方便书写和保证POD类型;=delete指定删除 , 方便禁止一些拷贝构造赋值和移动拷贝构造赋值函数 , 全局和普通函数的某个重载版本也可以禁止 。3、lambda函数编程的引入 , 注意捕获列表中传值和传引用区别(都是定义初始化仿函数闭包对象 , 但是&可获得调用时上下文值,&自定义类型性能更高 , 但要小心使用) 。在stl仿函数 , 泛型编程 , 复杂函数中作为匿名函数广泛使用 。lambda相比仿函数还是有区别的 , 只能函数内部初始化和使用 , 自定义仿函数和普通函数可以在不同作用域初始化和使用 , 所以使用时候区分就好 。
VII、融入实际应用” 总结: 1、alignas是设置变量的对齐大小 , alignof是获取变量的对齐大小 , 可以单独对变量对齐进行设置;stl库里面的align函数 , aligned_storage和aligned_union模板对内存块进行对齐调整 。2、通用属性 , cpp11引入的[[noreturn]](用在异常 , 终止 , 无限循环函数中)和[[carries_dependency]](用在弱内存模型并行编程中)属性声明符号 。3、Unicode字符串 , 1)cpp11中默认的string 是utf8编码 , 存储省空间 , 增删查找也是可以的(utf16更加方便些) , 计算文字数需转换到u16string 。2)c11对于字符转换用基于locale的codecvt , 也可以直接用wstring_convert配合codecvt_utf8_utf16等直接进行转换 , 注意utf16有大小端 。3)输出时候的一些设置 , 内部会调用设置相关的函数,cpp98添加了wifstream和wofstream类 , 但是cpp11没有u16ifstream和u32ofstream等 , 需要转换到更节省的utf8类型 。4)原生字符串字面量 , 语法R”()” , 但是转义字符不能再使用 。
VIII、c11和boost关系 , boost的使用:
你可以大致看下C11比C03多了什么 。那些东西很多都是从boost库里拉过去的 。主要是智能指针、线程、hash数据结构 。
正则表达式 , 另外 , boost里面还有filesystem我认为比较实用 。
尽量使用c11 , 在使用boost可以获得比较方便的方案时候 , 可以采用boost , 如:filesystem,date_time(其实用cpp11实现也是可以的) 。
推荐阅读
- 诺基亚将领导欧盟6G无线网络项目 联合爱立信英特尔。
- Word自定义项目符号怎么设置
- 驾照科二新增项目什么时候实行
- 教你Revit创建的注释标记族在项目中不能正常标记的处理方法
- 风险投资项目是什么 什么是风险投资
- 亿图项目管理软件官方下载使用帮助
- 农业三变项目如何贷款 「农业企业贷款」
- 农村开发项目贷款利率多少_农村发展项目
- 挽回前男友实战技巧 写给前男友的挽回复合信
- 汽车小保养项目有哪些
