用向量填充c ++中的简单动态数组

时间:2018-11-03 19:40:51

标签: c++ arrays

我正在尝试填充动态2D数组
我错了

#include<vector>
cin<<x;
vector<vector<int>> tab(x);
for (int i = 0; i < x; i++)
{ 
    for (int j = 0; j < x; j++)
    {
        cin>>tab[i][j];
    }  
}

我也想将其打印到屏幕上

2 个答案:

答案 0 :(得分:1)

要创建给定大小std::vector的{​​{1}}的{​​{1}},请使用

std::vectors

要打印它,可以使用循环:

x

拥有矩阵的一种更有效的方法是使用行和列的总大小的std::vector<std::vector<int>> foo(x, std::vector<int>(x)); 并相应地计算索引:

for (std::size_t row{}; row < x; ++row) {
    for (std::size_t col{}; col < x; ++col)
        std::cout foo[row][col] << ' ';
    std::cout.put('\n');
}

打印:

std::vector<int>

答案 1 :(得分:0)

vector<vector<int>> tab(x)

这只会为tab创建一个向量,而不会为子向量创建一个向量。

使用:

vector<vector<int>> tab(x, vector<int>(x));

也要填充子向量。

请注意,这不是创建矩阵的最有效方法。