首页 > 解决方案 > 向量定义是什么意思?

问题描述

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

标签: c++arraysvectordeclaration

解决方案


这两个声明之间的唯一区别

int arr[10] = {}

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

是类型说明符。

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

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

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

在第一个声明中,数组的所有元素都被初始化为零。在第二个声明中,所有元素都使用默认构造函数创建。也就是说,所有 10 个向量都是空的。

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

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

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


推荐阅读