小结:
string和vector是两种最重要的标准库类型。string对象是一个可变长的字符序列,vector对象是一组同类型对象的容器。
迭代器允许对容器中的对象进行间接访问,对于string对象和vector对象来说,可以通过迭代器访问元素或者在元素间移动。
数组和指向数组元素的指针在一个较低的层次上实现了与标准库类型string和vector类似的功能。一般来说,应该优先选用标准库提供的类型,之后再考虑C++语言内置的低层的替代品数组或指针。
笔记:
最好使用C++版本的C标准库头文件,C语言的头文件形如name.h,C++则将这些文件命名为cname。特别的,在名为cname的头文件中定义的名字从属于命名空间std。
注意检查下标的合法性,下标必须大于的等于0而小于字符串的size()的值。一种简便易行的方法是,总是设下标的类型为string::size_type,因为此类型是无符号数,可以确保下标不会小于0。此时,代码只需保证下标小于size()的值就可以了。
警告,某些编译器可能仍需以老式的声明语句来处理元素为vector的vector对象,如vector<vector<int> >。(两个> >之间有空格)
vector初始化,如果用的是圆括号,可以说提供的值是用来构造(construct)vector对象的。
如果用的是花括号,可以表述成我们想列表初始化(list initialize)该vector对象。
对vector对象来说,直接初始化的方式适用于三种情况:初始值已知且数量较少、初始值是另一个vector对象的副本、所有元素的初始值都一样。
所有标准库容器都可使用迭代器。
C++程序员习惯性地使用!=,其原因和他们更愿意使用迭代器而非下标的原因一样:因为这种编程风格在标准库提供的所有容器上都有效。
如果不清楚元素的确切个数,请使用vector。
内置的下标运算符所用的搜引值不是无符号类型,这一点与vector和string不一样。
尽管C++支持C风格字符串,但在C++程序中最好还是不要使用它们。
要使用范围for语句处理多为数组,除了最内层的循环外,其他所有循环的控制变量都应该是引用类型。
FAQ(Frequently Asked Questions):
Q1:头文件为什么不应包含using声明?