在c++中用vector填充一个简单的动态数组

fill a simple dynamic array in c++ with vector

本文关键字:一个 简单 数组 动态 中用 c++ vector 填充      更新时间:2023-10-16

我正在尝试填充一个动态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];
}  
}

我也想把它打印到屏幕上

要创建给定大小xstd::vectorsstd::vector,请使用

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>,并相应地计算索引:

std::vector<int> foo(x * x);
// access column `c` at row `r` like
foo[r * x + c];

打印:

for(std::size_t i{}; i < x; ++i, std::cout.put('n'))
std::copy(foo.begin() + i * x, foo.begin() + (i+1) * x, 
std::ostream_iterator<int>(std::cout, " "));
vector<vector<int>> tab(x)

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

用途:

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

也填充子向量。

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

相关文章: