update:2016/11/16
1.标准库类型vector
vector
能够容纳绝大多数类型的对象作为其元素,但是由于引用并不是对象,因此不存在包含引用的vector
。除此之外,其他大多数(非引用)内置类型和类类型都可以作为vector
的元素,这也包含vector
。
1.定义和初始化vector
vector
作为一个类模板,本身不会指定类型,而必须要为其指定类型。例如:
vector<int> ivec; //保存int类型的对象
vector<Sales_item> Sales_vec; //保存Sales_item类型的对象
vector<vector<string>> file; //保存vector对象的vector
初始化一个vector
对象的常用方法如下:
初始化vector 语句 |
含义解释 |
---|---|
vector<T> v1 |
v1 是一个空vector ,执行默认初始化 |
vector<T> v2(v1) |
v2 使用v1 的值初始化,包含了v1 的所有元素 |
vector<T> v2=v1 |
v2 是v1 的拷贝,包含了v1 的所有元素 |
vector<T> v3(n) |
v3 包含了n 个元素,执行了值初始化 |
vector<T> v4(n,val) |
v4 包含了n 个重复的元素,每个元素的值都是val |
vector<T> v5{a,b,c...} |
v5 的元素按顺序赋予初始值,执行列表初始化 |
vector<T> v5={a,b,c...} |
v5 使用列表的拷贝进行初始化。 |
1. 默认初始化
对vector
的默认初始化可以提供一个空的容器,方便之后对其进行任何允许的操作。
vector<int> vector1;
2. 拷贝初始化
对vector
执行拷贝初始化可以在初始化时将一个已存在的vector
元素的值拷贝给新的vector
对象。此时新的vector
中的元素就是原vector
对象对应元素的副本。
//assume that an int vector {1,2,3,4,5} called vector1 has been defined.
//then the following codes are equivalent to each other.
vector<int> vector2=vector1;
vector<int> vector3(vector1);
vector<int> vector4{vector1};
- 拷贝初始化时,两个
vector
对象的类型必须相同。
3. 列表初始化
对vector
执行列表初始化时,可以用花括号