C+中的多维向量+; 我刚开始学习C++。我正试图掌握多维数组和向量的语法,这时我开始感到相当困惑。我知道如何初始化多维数组。这似乎很简单:行后面跟着列。然而,向量更具挑战性。我必须以同样的方式初始化它们还是创建向量向量?

C+中的多维向量+; 我刚开始学习C++。我正试图掌握多维数组和向量的语法,这时我开始感到相当困惑。我知道如何初始化多维数组。这似乎很简单:行后面跟着列。然而,向量更具挑战性。我必须以同样的方式初始化它们还是创建向量向量?,c++,arrays,multidimensional-array,vector,C++,Arrays,Multidimensional Array,Vector,声明多维向量: vector<vector<int>> test(4,vector<int>(20)); 向量测试(4,向量(20)); 这将创建一个4 X 20的二维向量。当然,因为它们是可以根据需要改变的向量。索引与数组测试[3][19]相同如果您能够使用C++11,多维数组和向量向量可以以类似的方式初始化 int a1[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; std::vector<std::v

声明多维向量:

vector<vector<int>> test(4,vector<int>(20));
向量测试(4,向量(20));

这将创建一个4 X 20的二维向量。当然,因为它们是可以根据需要改变的向量。索引与数组
测试[3][19]

相同如果您能够使用C++11,多维数组和向量向量可以以类似的方式初始化

int a1[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
std::vector<std::vector<int>> a2 = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
a2的内存(最有可能):

此外,还可以定义一个向量向量,其中每行的列数不同

std::vector<std::vector<int>> a2 = { {1, 2, 3}, {4, 5}, {6, 7, 8, 9} };
向量a2={{1,2,3},{4,5},{6,7,8,9};
在多维数组中,保证每行的列数相同

std::vector<std::vector<int>> a2 = { {1, 2, 3}, {4, 5}, {6, 7, 8, 9} };

鉴于上述多维数组
a1
a1[1][2]
将是有效元素,
a1[2][3]
将是无效元素。对于向量向量,使用上述行,
a2[1][2]
不是有效元素,
a2[2][3]
是有效元素。

对于感兴趣的读者,Boost有一个专门针对此问题设计的多数组库。它声称比 STD::向量更有效,其接口是C++ + STL友好的。
#包括“boost/multi_array.hpp”
int main(){
//创建一个3 x 4 x 2的三维阵列
boost::multi_数组A(boost::区段[3][4][2]);
//分配
A[0][0][0]=1.0;
//解引用

向量的coutVector(向量的coutVector…)。有没有一种方法可以生成多维向量(如三维或更高维)更清晰、更容易阅读?@CrazyVideoGamez,当你需要这样的数组时,最好将它们的用法封装在一个类后面。这将使类的使用更容易,但类的实现必须处理数组的语法方面。我认为没有办法绕过这一点。
std::vector<std::vector<int>> a2 = { {1, 2, 3}, {4, 5}, {6, 7, 8, 9} };