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是不会怪我的~