向量定义是什么意思?

What does the vector definition mean?

我一直认为 c++ 中的 vector<int> vec[10] = {}; 意味着我们创建一个包含 10 个 int 的向量并使它们等于零。但实际上发生了完全不同的事情。 那么,当我们以这种方式声明 vector 时会发生什么?为什么? (我认为只是因为在 C++ 中 int arr[10] = {} 意味着我们创建一个包含 10 个元素的数组并使它们等于零)

这两个声明的唯一区别

int arr[10] = {}

vector<int> vec[10] = {};

是类型说明符。

在第一个声明中,声明了一个包含 10 个元素的数组,类型为 int

在第二个声明中,声明了一个包含 10 个元素的数组,类型为 std::vector<int>

然而,这种差异会影响元素的初始化方式。

在第一个声明中,数组的所有元素都是 zero-initialized。 在第二个声明中,所有元素都使用默认构造函数创建。即所有 10 个向量都是空的。

如果你想声明一个 std::vector<int> 类型的向量,它将有 10 个元素,那么你应该写

std::vector<int> vec( 10 );

在这种情况下,对象 vec 将包含 10 个元素,这些元素将针对类型 int 进行值初始化,它们将进行零初始化。