C++ primer 读书笔记--第三章 标准库类型
2016-03-28 21:54
369 查看
(1)string
1、在头文件中,必须总是使用完全限定的标准库名字。头文件中的内容会被预处理器复制到程序中,如果在头文件中放置using声明,就相当于在包含该文件的每个程序中都用了同一using声明。头文件中应该只定义确实必要的东西,建议在头文件中用using std::cout 之类的,不要用using namespace std。
2、使用string类型对象,头文件库为<string>
3、string类型对象的读取操作
*读入一个string对象:
(2) 读取字符直到再次遇到空白字符,读取终止。
*读入未知数目的string对象:
(1) cin>>word会返回所读的数据流,因此可以把输入作为判断条件。
(2) 由上面的例子直到空白字符(空格、换行符、制表符等)可以区别不同string类型对象,但并没有结束while循环。只有遇到无效输入才能停止while循环。ctrl + z 停止有效输入。
4、size_type类型
string类类型和许多其他类库都定义了一些配套类型,通过这些配套类型,库类型的使用就能与机器无关。size_type就是其中的一种。他定义为与unsigned型具有相同的含义,
可以保证能够存储任意string对象的长度。特别不要将size_type类型变量赋给int变量。size_type类型为unsigned类型(unsigned int或unsigned long),int为signed int类型,
而unsigned类型可以表示的最大正数值比对应的signed类型值大一倍。
5、string可以通过下标访问string对象中的单个字符。下标操作符为size_type类型。
6、string对象中字符处理函数定义在cctype头文件中,参见P89页。
7、建议采用C++版本的头文件,如#include <cname>,不采用C语言形式#include <name.h>,头文件前面的c表示头文件源于C标准库。cname头文件定义的名字定义在命名空间std内,而.h版本却不是这样。
(2) vector
1、vector是一个类模板。
2、vector对象动态增加。如果确实在循环中增加了元素的话,那么测试已经保存的size值作为循环的结束条件就会有问题,因为没有将新加入的元素计算在内。所以倾向在每次循环中测试size的当前值,而不是在进入循环前,存储size值的副本。
3、C++程序员习惯优先使用 !=而不是<来编写循环判断条件。
4、迭代器是一种检查容器内元素并遍历元素的数据类型,它提供了比下标操作更通用化的方法。所有的标准库容器都定义了相应的迭代器类型,但是只有少数容器定义了下标操作。
5、vector<int>::const_iterator //迭代器指向的值不允许改变。
const vector<int>::iterator //迭代器是一个常数,不允许改变。
1、在头文件中,必须总是使用完全限定的标准库名字。头文件中的内容会被预处理器复制到程序中,如果在头文件中放置using声明,就相当于在包含该文件的每个程序中都用了同一using声明。头文件中应该只定义确实必要的东西,建议在头文件中用using std::cout 之类的,不要用using namespace std。
2、使用string类型对象,头文件库为<string>
3、string类型对象的读取操作
*读入一个string对象:
string s; cin>>s;(1) 读取并忽略开头所有空白字符(空格、换行符、制表符等)
(2) 读取字符直到再次遇到空白字符,读取终止。
*读入未知数目的string对象:
string word; while(cin>>word) cout << word << endl;
(1) cin>>word会返回所读的数据流,因此可以把输入作为判断条件。
(2) 由上面的例子直到空白字符(空格、换行符、制表符等)可以区别不同string类型对象,但并没有结束while循环。只有遇到无效输入才能停止while循环。ctrl + z 停止有效输入。
4、size_type类型
string类类型和许多其他类库都定义了一些配套类型,通过这些配套类型,库类型的使用就能与机器无关。size_type就是其中的一种。他定义为与unsigned型具有相同的含义,
可以保证能够存储任意string对象的长度。特别不要将size_type类型变量赋给int变量。size_type类型为unsigned类型(unsigned int或unsigned long),int为signed int类型,
而unsigned类型可以表示的最大正数值比对应的signed类型值大一倍。
5、string可以通过下标访问string对象中的单个字符。下标操作符为size_type类型。
6、string对象中字符处理函数定义在cctype头文件中,参见P89页。
7、建议采用C++版本的头文件,如#include <cname>,不采用C语言形式#include <name.h>,头文件前面的c表示头文件源于C标准库。cname头文件定义的名字定义在命名空间std内,而.h版本却不是这样。
(2) vector
1、vector是一个类模板。
2、vector对象动态增加。如果确实在循环中增加了元素的话,那么测试已经保存的size值作为循环的结束条件就会有问题,因为没有将新加入的元素计算在内。所以倾向在每次循环中测试size的当前值,而不是在进入循环前,存储size值的副本。
3、C++程序员习惯优先使用 !=而不是<来编写循环判断条件。
4、迭代器是一种检查容器内元素并遍历元素的数据类型,它提供了比下标操作更通用化的方法。所有的标准库容器都定义了相应的迭代器类型,但是只有少数容器定义了下标操作。
5、vector<int>::const_iterator //迭代器指向的值不允许改变。
const vector<int>::iterator //迭代器是一个常数,不允许改变。
相关文章推荐
- 我与C语言的那点故事
- 《C++》08 C++引用
- c语言:链队列的实现
- 《C++》07 C++ 指针
- C/C++动态分配二维数组
- C++ 设计模式 —— 访问者(Visitor)
- 一起talk C栗子吧(第一百三十二回:C语言实例--从内存的角度看进程和线程)
- HDU 1213 How Many Tables(并查集)
- C++中const与#define的区别
- kmp算法字符串匹配C语言实现
- C++作业1
- C语言关键字总结
- C++ MFC常用函数(转)
- VC++ 获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- 第七届蓝桥杯C语言C组-(自己懂的题目)
- 理解C语言——从小菜到大神的晋级之路(15)——完结篇:C编程风格
- 递归求最大最小值算法 分治策略(c语言实现)
- C++作业2
- C++ 设计模式 —— 策略模式(Strategy)
- assert预处理宏总结