C/CPP
文章平均质量分 61
地球在动
这个作者很懒,什么都没留下…
展开
-
C++17 之 "折叠表达式"
支持的操作符折叠分类空参数包其它例子最后C++11 提供了可变模板参数包, 使函数可以接受任意数量的参数. 但在 C++11 中展开参数包稍显麻烦, 而 C++17 的折叠表达式使得展开参数包变得容易, 其基本语法是使用 (...) 的语法形式进行展开.支持的操作符折叠表达式支持 32 个操作符: +, -, *, /, %, ^, &, |, =,...原创 2018-04-17 13:51:43 · 8341 阅读 · 1 评论 -
C++17 之 "constexpr if"
C++17 之前的做法C++17 的作法更多最后普通的 if-else 是在执行期进行条件判断与选择, 这意味着在泛型编程中无法使用 if-else 语句进行条件判断. 比如例 1 会引起编译错误例 1: 将多个数累加并返回累加结果template <int N, int... Ns>auto sum(){ if (sizeof...(Ns...原创 2018-04-18 08:24:19 · 16260 阅读 · 3 评论 -
C++17 之 "void_t"
使用 void_tvoid_t 的工作原理一个有趣的例子C++ 17 提供了 void_t, 它是一个模板别名, 定义为template<class...>using void_t = void;void_t 一般用于元编程. 从定义上看, void_t 的定义平淡无奇, 但利用 SFINAE 原则在元编程中却可以发挥巨大威力.使用 void_t...原创 2018-04-19 20:24:36 · 5586 阅读 · 0 评论 -
C++17 之 "结构绑定"
声明例子绑定 pair, tuple绑定数组绑定结构注意结构绑定 (Structured Binding) 位于ISO/IEC14882:2017 11.5 节. 结构绑定的作用是方便从其它数据结构中提取数据, 如 pair, tuple, 数组等. 通过结构绑定, 可以替代 c++17 之前的 std::tie, 并且使用更加方便.声明通用的声明方式为...原创 2018-04-12 17:41:21 · 1453 阅读 · 0 评论 -
C++17 之 "新的 '{}' 初始化规则"
C++11 引入列表初始化, 即使用 {v1, v2, ..., vn} 的方式对聚合类型进行初始化. 聚合类型在 ISO/IEC14882:2017 11.6.1 描述, 表示数组或类:无用户定义的, explicit 或 继承而来的构造函数无私有或保护的非静态数据成员无虚函数无虚的, 私有的或保护的基类C++11 的列表初始化规则, 在与 auto 联合使用时经常无法达...原创 2018-04-12 21:29:43 · 1906 阅读 · 0 评论 -
C++17 之 "利用构造函数推导模板参数类型"
演示用的模板类C++17 之前的做法C++17 的做法某些情况总结在 C++17 之前, 通过向模板类的构造函数传递参数无法推导出类的模板参数类型. 一般要通过一个帮助函数来构造一个对象, 通过传递给帮助函数的参数推导出参数类型, 然后在帮助函数中返回一个构造好的对象. 下面介绍 C++17 之前的做法与 C++17 的便利性.演示用的模板类temp...原创 2018-04-13 21:07:45 · 2275 阅读 · 0 评论 -
C++17 之 "deduction guides"
语法例子最后“Deduction guides” 在 C++17 标准 https://www.iso.org/standard/68564.html 中属于 17.9 章节. 标准中如下描述: Deduction guides 用于将一个 模板名称 声明为一个类型标识符, 此时需要使用 Deduction guides 推导出该标识符的类型. Deductio...原创 2018-04-23 16:32:51 · 1676 阅读 · 1 评论 -
c++ 正则表达式
主要实体类算法迭代器常量其它主要实体之间的关系后记正则表达式在 c++11 中引入. 在 c++ 正则表达式库中, 主要包括一些类, 算法, 迭代器, 标识等. 在编写程序时, 调用的入口是正则表达式库中的算法和迭代器.主要实体类basic_regex正则表达式类, 封装了正则表达式字符串. 根据模板参数不同, 又可以分为 ...原创 2018-05-08 09:56:27 · 1337 阅读 · 0 评论 -
pthread 编程
文章目录pthread api创建线程终止线程线程管理栈管理其它互斥量创建与销毁互斥量锁定与解锁互斥量条件变量创建与销毁条件变量等待与通知所有库函数pthread api对 pthread api 进行归类, 可以分为四类:线程管理直接工作于线程, 如创建, 分离, 加入 (join) 等, 也包括设置或查询线程属性(joinable, scheduling 等).互斥量处理...翻译 2019-01-17 23:42:24 · 1055 阅读 · 1 评论