向量定义是什么意思?
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
进行值初始化,它们将进行零初始化。
我一直认为 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
进行值初始化,它们将进行零初始化。