我一直认为c ++中的vector<int> vec[10] = {};
意味着,我们创建了一个10个int的向量并使它们等于零。但实际上,情况完全不同。
那么,当我们以这种方式声明向量时会发生什么呢? (我以为只是因为在c ++ int arr[10] = {}
中,我们创建了一个由10个元素组成的数组并使它们等于零)
答案 0 :(得分:3)
这两个声明之间的唯一区别
int arr[10] = {}
和
vector<int> vec[10] = {};
是类型说明符。
在第一个声明中,声明了一个由int
类型的10个元素组成的数组。
在第二个声明中,声明了一个由std::vector<int>
类型的10个元素组成的数组。
但是这种差异会影响元素的初始化方式。
在第一个声明中,数组的所有元素都被零初始化。 在第二个声明中,所有使用默认构造函数创建的元素。那就是所有10个向量都是空的。
如果要声明类型为std::vector<int>
的向量,该向量将包含10个元素,则应编写
std::vector<int> vec( 10 );
在这种情况下,对象vec
将包含10个将被值初始化的元素,对于类型int
,它们将被初始化为零。