标准库类型vector
定义和初始化vector对象
列表初始化vector对象
vector<string> articles = {"a", "an", "the"};
创建指定数量的元素
vector<int> ivec(10, -1); // 10个int类型元素,每个都被初始化为-1
vector<string> svec(10, "hi!"); // 10个string类型元素,每个都被初始化为“hi!”
值初始化
通常情况下,可以只提供vector对象容纳的元素数量而略去初始化。此时库会创建一个值初始化元素初值,并把它给容器中的所有元素。这个初值由vector对象中元素的类型决定。
对这种初始化的方式有两个特殊限制:其一,有些类要求必须明确地提供初始值,如果vector对象中元素的类型不支持默认初始值,我们就必须提供初始的元素值。其二,如果只提供了元素的数量而没有设定初始值,只能使用直接初始化:
vector<int> ivec(10); // 10个元素,每个都初始化为0
vector<string> svec(10); // 10个元素,每个都是空string对象
vector<int> vi = 10; // 错误:必须使用直接初始化的形式指定向量大小
列表初始值还是元素数量?
如果用的是圆括号,可以说提供的值是用来构造vector对象的;如果用的是花括号,可以表述成我们想列表初始化。
vector<int> v3(10, 1); // 10个元素,每个都为1
vector<int> v4{10, 1}; // 2个元素,值分别为10和1