首页 > 解决方案 > 在 cpp 中声明向量数组

问题描述

我是 cpp STL 的新手,当我们声明向量数组时,我对向量数组有疑问,就像vectors <int> arr[100]; 我们也可以说这是二维矩阵一样。但是如果我们谈论二维数组 ( int prr[100][100]),prr[0]那么它将打印第 0 行中第一个数组的地址基本上我想问为什么我们要声明vector <int> arr[100],因为arr[0]还会将数组的地址存储在第 0 个数组中,我们应该像vector <int*> arr[100]声明向量数组一样声明

标签: c++arraysvector

解决方案


但是如果我们谈论二维数组 ( int prr[100][100]) 那么prr[0]它将打印第 0 行中第一个数组的地址

这在某种程度上和某些情况下是正确的。

prr[0]是一个类型的对象——一个 100秒int [100]的数组。int

在某些情况下,prr[0]衰减为指向其第一个元素的指针,但并不总是如此。

sizeof(prr[0])100 * sizeof(int)
&prr[0]将是类型int (*)[100),指向“100 ints 数组”的指针,而不是int**.

相比之下,

基本上我想问我们为什么要声明vector <int> arr[100],因为arr[0]还会将数组的地址存储在第 0 个数组中,我们应该像vector <int*> arr[100]声明向量数组一样声明

不,arr[0]不会将数组的地址存储在第 0 个数组中。arr[0]是类型std::vector<int>。就这么简单。与数组不同,类型std::vector<int>的对象在任何上下文中都不会衰减为指向对象第一个元素的指针。因此,任何进一步的比较都是int*没有意义的。


推荐阅读