字符串
相等性运算符(==和!=)分别检验两个string对象想等或不相等,string 对象相等意味着长度及所包含字符全部相同。关系运算符 <、<=、>、>=分别检验一个string对象是否小于、小于等于、大于、大于等于另一个 string 对象,依照(大小写敏感的)字典顺序:
- 1、如果两个 string 对象的长度不同,而且较短的 string 对象的每个字符都与较长的 string 对象对应位置上的字符相同,就说较短 string 对象小于较长 string 对象
- 2、如果两个 string 对象在某些对应的位置上不一致,则 string 对象比较的结果其实是 string 对象中第一对相异字符比较的结果。
c++11 for 语句
for (declaration : expression)
statement
expression 部分是一个对象,表示一个序列。declaration 部分负责定义一个变量,该变量将被用于访问序列中的基础元素。每次迭代,declaration 部分的变量会被初始化为 expression 部分的下一个元素值。
使用 for 语句改变字符串中的字符
需要将循环变量定义成引用类型。
只处理一部分字符
想访问 string 对象中的单个字符有两种方式:
- 使用下标
- 使用迭代器
string::size_type 类型
size 函数返回一个 string::size_type 类型的值,该配套类型体现了标准库类型与机器无关的特性。具体使用时通过作用域操作符表明名字 size_type 是在类 string 中定义的。
string::size_type 是一个无符号类型的值,而且足够存放下任何 string 对象大小。同时使用该类型进行数值对比时要注意不要和带符号数混用,因为 s.size() < n 在 n 是一个负值的 int 时判断结果基本肯定为 true, 因为负数会自动转换成一个很大的无符号数。
下标运算符([ ])接受的输入参数是 string::size_type 类型的值,表示要访问的字符的位置;返回值是该位置上字符的引用。下表值必须大于等于 0 而小于 s.size(),超过范围则引发不可预知的结果
vector
- 老式声明 vector 元素的 vector 的方式为外层 vector 对象的右尖括号和其他元素类型之间添加空格:
vector<vector <int> >
- 提供初始元素值的列表,只能把初始值都放在花括号里进行列表初始化而不能放在圆括号里:
vector<string>{"a", "b"};
- 值初始化:圆括号可用于同值的初始化
vector<int> v1(10, 1) \\ 十个1的 vector,不填1则默认0
。甚至在列表初始化失败时也会尝试用值初始化处理vector<string> v1{10, "hi"} \\ 十个"hi"的vector
- 使用vector的 size_type时需要先指定它是由哪种类型定义的
vector<int>::size_type
- 只有当元素的值可比较时,vector对象才能被比较