vector是C++标准库提供的一种类模板,是同一种类型的对象的集合,每一个对象都有一个对应的索引(整数)。vector也被称为容器。使用它必须包含include <vector>
vector不是一种数据类型,而是一个类模板,可以用来定义任意多种数据类型。vector类型的每一种都制定了其保存元素的类型。so,vector<int>和vector<string>都是数据类型。
vector对象的定义和初始化
vector类定义了多种构造函数,用来初始化vector对象
比如:
vector<T> v1; // v1为空
vector<T> v2(v1); //v2是v1的一个副本
vector<T> v3(n,i ); //v3包含n个值为i的元素
vector<T> v4(n); //v4含有初始化元素的n个副本,类似于数组 T V[n]
对于内置数组 我们可以显式地把数组的元素初始化为一组常量值,例如 :
int ia[ 6 ] = { -2, -1, 0, 1, 2, 1024 };
我们不能用同样的方法显式地初始化 vector ,但是可以将 vector 初始化为一个已有数组的全部或一部分,只需指定希望被用来初始化 vector 的数组的开始地址以及数组最末元的下一位置来实现,例如:
// 把 ia 的 6 个元素拷贝到 ivec 中
vector< int > ivec( ia, ia+6 );
被传递给ivec 的两个指针标记了用来初始化对象的值的范围,第二个指针总是指向要拷贝的末元素的下一位置,标记出来的元素范围也可以是数组的一个子集,例如 :
// 拷贝 3 个元素 ia[2], ia[3], ia[4]
vector< int > ivec( &ia[ 2 ], &ia[ 5 ] );
与内置数组不同 vector 可以被另一个 vector 初始化 或被赋给另一个 vector 例如
vector< string > svec;
void init_and_assign()
{
// 用另一个 vector 初始化一个 vector
vector< string > user_names( svec );
// ...
// 把一个 vector 拷贝给另一个 vector
svec = user_names;
}