C++primer 第三章笔记 初稿
2017-03-01 21:20
274 查看
3.1命名空间的using声明
作为一个好的设计,在头文件中应减少using声明;
3.2 string类型
读取未知数量的string对象常使用while循环;范围for(引用符)结合cctype中的头文件,对字符串进行处理;
利用decltype(s.size()) 简化定义过程;
将size()函数值赋值给一个int型变量,实际上进行了隐式转换,因为size()返回值是无符号类型(小心溢出!)。
无论是string还是其他泛型编程,都应该多用!=判断是否越界,因为并非所有模板都重载了<运算符。
3.3 迭代器
什么是迭代器有时又称游标;
可在容器上遍访的接口;
提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示;
分离了容器与算法
const迭代器
是底层const
通过cbegin(),cend()可以轻松获取;
任何改变容器的操作,都有可能改变迭代器,故应当重复调用获取迭代器函数而不是把它当做变量保存。
迭代器相减返回类型是difference_type,为带符号整型
3.4 数组
数组下标一般为size_t类型;使用数组名为auto参数时,类型为数组类型的指针,而decltype为数组类型;
通过自带的begin()和end()函数可获取首尾指针;
指针的差为ptrdiff_t类型,为带符号整型;
可以用字符数组初始化string类对象,反之不行
char s1[3]={'a','v','c'}; char s2[]="avc"; char *s3=s1;
没有多维数组,只有数组的数组,层数阅读由内到外;
下述代码不能通过,因为类型不匹配
for (auto row : matrix) for (auto col : row)
应该改为
for (auto &row : matrix) for (auto col : row)
可以使用类型别名简化
using int_array = int [4] int ia[3][4]; for(int_array *p = ia; p!=ia+3; ++p)
相关文章推荐
- C++PRIMER 阅读笔记 第三章
- C++primer学习笔记-第三章标准库类型
- C++Primer第五版【学习笔记】——第三章 Strings,Vectors,Arrays
- C++primer第三章(笔记)
- C++primer第三章笔记
- C++primer 第九章笔记 初稿
- C++primer 第六章笔记 初稿
- C++primer 第五章笔记 初稿
- C++primer 第十四章笔记 初稿
- C++primer第五版第三章学习笔记
- C++primer 第四章笔记 初稿
- C++primer 第十一章笔记 初稿
- C++primer 第十六章笔记 初稿
- C++primer 第三章学习笔记(string篇)
- C++primer 第二章笔记 初稿
- C++primer 第十三章笔记 初稿
- C++Primer 学习笔记 第三章(标准库类型)
- C++primer 第十章笔记 初稿
- C++primer 第十五章笔记 初稿
- C++primer 第七章笔记 初稿