7 C++ 标准库类型 vector-2 定义和初始化vector对象

时间:2024-11-21 08:17:47

  下表列出了定义vector对象的常用方法。

表 1:初始化vector对象的方法。
语句 描述
1 vector<T> v1 v1是一个空vector,它潜在的元素是T类型的,执行默认初始化。
2 vector<T> v2(v1) v2中包含有v1所有元素的副本。
3 vector<T> v2 = v1 等价于v2(v1)v2中包含有v1所有元素的副本。
4 vector<T> v3(n, val) v3包含了n个重复的元素,每个元素的值都是val
5 vector<T> v4(n) v4包含了n个重复地执行了值初始化的对象。
6 vector<T> v5{a, b, c...} v5包含了初始值个数的元素,每个元素被赋予相应的初始值。
7 vector<T> v5={a, b, c...} 等价于v5{a, b, c...}

  需要注意的是,如果初始化时使用了花括号的形式,但是提供的值又不能用来列表初始化,就要考虑用这样的值来构造vector对象了。例如,要想列表初始化一个含有string对象的vector对象,应该提供能赋给string对象的初值。此时不难区分到底是要列表初始化还是用给定的容量值来构造vector对象:

vector<string> v1{"hi"};        // 列表初始化:v1 有一个元素
vector<string> v2("hi");        // 错误:不能使用字符串字面值构建 vector 对象
vector<string> v3{10};          // v3 有 10 个默认初始化的元素
vector<string> v4{10, "hi"};    // v4 有 10 个值为 "hi" 的元素

确认无法执行列表初始化后,编译器会尝试用默认值初始化vector对象。