1、std::vector<> 容器:
标准库定义的容器:std::vector<>。可作为 C++ 语言内置的普通数组的直接替代品,使用起来更容易、更安全,并且相比低级的内置数组能提供更大的灵活性。
vector<T>容器在 vector 头文件定义,所以必须在源文件中包含这个头文件,才能使用容器类型。
向量容器 vector<> 是一个序列容器,类似于 array<T, N>容器,但是功能更加强大。不需要在编译时提前知道 vector<> 将存储的元素数量。
vector<> 的大小可以自动增加,以容纳任意数量的元素。
下面创建了一个 vector<> 容器,以存储 double 类型的值:
std::vector<double> values;
2、初始化:
std::vector<double> values(20);
与内置数组和 array<> 对象不同, vector<> 容器总会初始化元素。
vector<> 没有 fill() 函数。相反,它提供了 assign() 函数,可用来重新初始化 vector<> 的内容,就像第一次初始化那样。
3、访问各个元素:
使用索引可以访问和使用元素,其方式与标准数组相同,例如:
valuse[4] = values[3] + 2.0*values[1];
下面是另外一个例子,可计算 values 对象中所有元素的和:
double total {};
for (size_t i {}; i < values.size(); ++i)
{
total += values[i];
}
vector<> 对象是一个范围, 所以可以使用基于范围的 for 循环计算元素之和:
double total {};
for (auto value: values)
{
total += value;
}
4、结论:
应该在代码中优先使用 vector<> 容器而不是标准数组。
如果在编译时知道元素的准确数量 ,就使用 std::array<>容器, 否则使用 std::vector<> 容器。