字符串,向量和数组
标准库类型 string
直接拷贝和拷贝初始化
如果使用等号(=)初始化一个变量,实际上执行的是拷贝初始化,编译器把等号右侧的初始值拷贝到新创建的对象中去。如果不使用等号,则执行的是直接初始化
string s = (10,'c') //直接初始化
string s = string(10,'c') //拷贝初始化
string 对象上的操作
s.size() 返回的是一个string::size_type类型的无符号数,当使用这个值之后就不要使用有符号数了,混用 int 和 unsigned 可能带来问题
比较 string 对象 ,大小写敏感
字面值和 string 对象相加
当把 string 对象和字符字面值及字符串字面值混在一条语句中使用时,必须确保每个加法运算符(+)的两侧的运算对象至少有一个是 string
处理 string 对象中的字符
处理每个字符?使用基于范围的for语句
标准库类型 vector
要想使用 vector ,必须包含适当的头文件 #include <vector>
编译器根据模板创建类或函数的过程称为 实例化
vector 能容纳绝大多数类型的对象作为元素,但是因为引用不是对象,所以不存在包含引用的vector
定义和初始化 vector 对象
如果使用的圆括号,可以说提供的值是用来构造 vector 对象的
如果使用的花括号,可以表达成我们想列表初始化该 vector 对象
向 vector 对象中添加元素
范围 for 语句体内不应改变其所遍历序列的大小
其他 vector 操作
迭代器
使用迭代器
有迭代器的类型同时拥有返回迭代器的成员,比如,这些类型都拥有名为 begin 和 end 的成员
begin 成员负责指向第一个元素的迭代器,end 成员负责返回指向容器“尾元素的下一个位置的迭代器”,该迭代器指示的是容器的一个本不存在的“尾后”元素,这样的迭代器没什么实际含义,仅是个标记
如果容器为空,则 begin 和 end 返回的都是尾后迭代器,同一个迭代器