《c++ primer》3.3 vector 类型小结
1. 头文件
#include<vector>
using std::vector;
2. 声明
vector是一个类模板,vector中的元素是什么类型,需要在<>内说明:
vector<int> ivec; vector<Sales_item> Sales_vec; vector<vector<string>> file; // 元素为vector, 所以是一个string元素的矩阵
但元素不能是别名(reference)
3. 初始化
vector<int> ivec; vector<int> ivec2(ivec); vector<int> ivec3 = ivec; vector<string> articles = {"a", "an", "the"}; vector<int> ivec(10,-1); // 10个元素,每个都是-1 vector<int> ivec(10); // 10个元素,值都是0。如果不是int而是其他class,没有默认初始值,则无法这样定义
为了更包容,他们还允许定义成 vector<string> v8{10, "hi"},但我们只需要记住并使用上面的定义&初始化方式。
4. 追加元素
vector有一个成员函数 push_back,可以在列表最末尾添加元素
vector<int> v2; for(int i=0;i<100;i++) v2.push_back(i);
vector可以有效地增加长度,一般比确定长度还要有效。
range for 的循环体不能改变 range for 条件语句中的 size
5. size_type
类似于string中关于size_type的说明,而且使用的时候必须带上成员类型
vector<int>::size_type // ok vector::size_type //错误
6. vector 操作
v.empty() // true if v is empty; false else. v.size() v.push_back(t) v[n] v1=v2 v1={a,b,c,...} v1==v2 v1!=v2 <,<=,>,>= //仅当成员类型定义了<,<=,>,>=时可以使用