1. string
字符串。相比c语言里面的char[]可是好用多了。
2. string的4种初始化
- string s1;
 - string s2(s1);
 - string s3(“value”);
 - string s4(n, ‘c’);
 
3. string的操作
| 操作 | 解释 | 
|---|---|
| s.empty() | 是否为空串,返回true或者false if (st.emtyp()) .. | 
| s.size() | 字符串长度,相当于java里面的length() | 
| s[n] | 数组一样的用法 | 
| s1 + s2 | 连成一个新的字符串,返回 | 
| s1 = s2 | s1的内容替换成s2的副本 | 
| v1 == v2 | 比较内容是否相等 | 
| > < != | 比较每个字符,比较字符串会像c语言里面的调用strcmp?不存在的。 | 
4. string::size_type类型
size()返回的是一个string::size_type类型的值,也就是说本质是用for(int i=0; i< s.size();i++)是不精确的,因为size_type是一个unsigned型的值,int会丢失精度。
5. 遍历string
正确的姿势应该是
  | 
  | 
6. vector类型
可变数组,大小可以动态变化,用起来非常方便,个人感觉跟java里面的arraylist类似,而且还是一个模版,还是一个容器,可以包含其他对象。
使用之前先:
  | 
  | 
7 vector的4种初始化
| 类型 | 说明 | 
|---|---|
| vector | 
保存类型为T对象 | 
| vector | 
v2是v1的一个副本 | 
| vector | 
v3包含n个i | 
| vector | 
初始化n个副本的T | 
  | 
  | 
创建了10个int的vector,每个是0,
  | 
  | 
创建了10个string,同时调用默认的构造函数进行初始化,string默认的构造函数是空串。
8. vector对象的操作
| 操作 | 说明 | 
|---|---|
| v.empty() | |
| v.size() | |
| v.push_back(t) | 末尾增加一个t的元素 | 
| v[n] | 下标操作 | 
| v1 = v2 | 赋值,替换为v2的副本 | 
| v1 == v2 | |
| != ,<, <= ,>=, > | 
9. vector的size
同样返回的是size_type类型: vector
10.添加元素
要用push_back(),千万不能用下标操作:
  | 
  | 
这是错误的,下标操作只能获取已存在的元素,正确应该写成:
  | 
  | 
11.迭代器
除了用下标以外,标准库还提供了另一种访问元素的方法:使用迭代器 iterator
12.iterator类型
每种容器都有iterator类型
13. begin和end操作
分别指向第一个元素和末端元素的下一个,end()不指向任何元素,只是起到了哨兵的作用。
14.自增,解引用
  | 
  | 
向前移动一个位置,
*iter 用迭代器访问当前指向的元素.
连起来,遍历vector就可以这样写
  | 
  | 
c++11里面有个auto类型可以简化iter的定义工作:
  | 
  | 
c++也发展迅猛,都发展到c++14了,17正在发展中。
以上就是string和vector的总结,内容跟c++ primer里面的相似度很高,哈哈,相信lippman是不会怪我的~

