《C++ Primer》学习笔记之vector

来源:互联网 发布:矩阵论期末考试试题 编辑:程序博客网 时间:2024/06/05 00:26

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;
}