C++primer 第十六章笔记 初稿
2017-07-28 10:12
183 查看
17.1 tuple类型
基本操作头文件:tuple
一个tuple可以有预定数量的任意多的成员,类似于一个未命名的数据结构
对一个tuple进行定义(初始化),可以显示指明所有类型,也可以调用make_tuple,通过一组给定的初始化值生成
如果想访问其中某个成员,可使用 get(tuple-item)来访问,number必须是 constexpr 整型
如果想比较两个tuple对象,必须满足成员数量相同
tuple_size是一个辅助类模板,通常用来访问某个tuple**类型**的成员的个数,一般形式如下
auto sz = tuple_size<type-name>::value;
其中,type-name可由对tuple对象进行decltype操作得到。
tuple_element是一个辅助类模板,通常用来访问一个tuple中某个成员的类型,一般形式如下
tuple_element<number, type-name>::type x = get<number>(tuple-item);
equal_range模板函数接收两个迭代器,一个值(和一个谓词),返回一个pair指明范围
17.2 bitset
定义与初始化定义一个bitset时,必须提供一个常量表达式作为模板参数,表示大小
当使用整型初始化bitset时,整型转化为ULL。如果bitset的大小超过ULL,则补零,否则截断高位
当使用string对象或字符数组初始化bitset时,最小的下标对应最高位,且为01字符串。可以使用迭代器,将子串作为初始值
string str = "0100011101"; bitset<32> bs1(str, 5, 4); //取第五位开始的四位 bitset<32> bs2(str, str.size()-4); //取最后四位
bitset的操作
包括set/reset/filp等改变值的操作,也包括any/all
/count/test等检查操作,还有to_ulong等可以转化成无符号长整型操作。
IO操作
在流提取过程中,如遇到非01字符,或遇到输入尾部或错误,或达到大小上限,输入才会停止
在流插入过程中,操作对象直接为对象名
17.3 正则表达式
基本信息头文件:regex
基本组件
组件名 | 作用 |
---|---|
regex | 表示一个正则表达式 |
regex_match | 匹配字符串与表达式 |
regex_search | 寻找第一个匹配的子序列 |
regex_replace | 用格式替换正则表达式 |
sregex_iterator | regex_search 迭代器 |
smath | 保存搜索结果 |
9395
ECMAScript,也可以用相关操作更改语法。
用 “\ .” 的表达方式,排除.匹配任意字符的二义性,但为了排除C++对\的二义性,通常用\ \表示需要得到一个\字符
对于迭代器,每一次递增,即调用一次regex_search
通过括号可以分割子表达式,并可以通过smath的下标进行访问,当然文本中的括号因此需要添加\ \以表示区分。
控制匹配格式的字符,定义在std的regex_constants里。
17.4 随机数
C++中随机数生成由两部分完成,引擎负责生成随机数,分部类负责生成具体的分布(包括区间),引擎通过seed()方法改变种子。用获取的随机整数除以上界,以获得随机浮点数是一个不好的方法,因为精度的不足,很多浮点数根本不会生成。使用新标准库的uniform_real_distribution是一个好的方法。
17.5 IO
IO中有许多操作符,通常分为两类:一类是控制输出形式;另一类是控制补白和位置;一般操作符成对出现,因为操作符一旦使用格式保持,需要在恰当的时候还原格式。
get(),put()等操作属于未格式化的IO,将流以字节序列处理,可以实现回退等操作,但get等操作的返回类型必须是int。
通过tellg(tellp)/seekg(seekp)操作,可以获取流的地址,进行定位操作。
相关文章推荐
- C++Primer学习笔记第十六章(16/18)类 模型与泛型编程
- C++ primer 第十六章笔记 初稿
- C++primer 第十一章笔记 初稿
- C++primer 第六章笔记 初稿
- C++primer第五版笔记-第十六章模板与泛型编程
- C++primer 第二章笔记 初稿
- C++primer 第十章笔记 初稿
- C++primer 第十四章笔记 初稿
- C++primer 第四章笔记 初稿
- C++primer 第十五章笔记 初稿
- C++primer 第七章笔记 初稿
- C++primer 第五章笔记 初稿
- C++primer 第十三章笔记 初稿
- C++primer 第九章笔记 初稿
- C++primer 第三章笔记 初稿
- c++primer学习笔记2 - 标准库类型
- C++primer学习笔记----面向对象程序设计(1)
- C++primer学习笔记----智能指针
- C++Primer学习笔记一
- C++Primer新笔记之----第11章 使用关联容器