C++ 如何动态创建二维向量

C++ How to dynamically create a 2D vector

我正在尝试创建一个 n x n 向量,稍后我可以 cout 作为 table/matrix。 Xcode 指向 for 循环中的 = 并告诉我 No viable overloaded '='。我不知道这意味着什么或如何解决它。

int n=5;
vector< vector<int> > row(n);
for (int i=0; i<n; i++) {
   row[i] = new vector<int> column(n);
}

也试过这个,但是Xcode也不喜欢,这次指着columnExpected ')'

int n=5;
vector< vector<int> > row;
for (int i=0; i<n; i++) {
   row.push_back(new vector<int> column(n));
}

我猜这与我在 for 循环中声明新向量 column 的方式有关。非常感谢任何 help/advice。谢谢。

简单的解决方案是使用相关的 constructor of std::vector,将其初始化为 n 个元素,每个元素的值为 val - 无需循环。

std::vector<T> (n, val);

有了你的原始代码片段,我们将得到以下结果,它将初始化行以具有 n std::vectors,每个具有 n个元素。

std::vector<std::vector<int> > row (n, std::vector<int> (n));

尝试以下方法

int n = 5;
std::vector< std::vector<int> > row(n);
for (int i=0; i<n; i++) {
   row[i].push_back( std::vector<int>(n) );
}

int n = 5;
std::vector< std::vector<int> > row(n, std::vector<int>( n ) );

当调用row的构造函数时,所有元素也被初始化。 我认为这段代码可以满足您的需求:

for (int i=0; i<n; i++) {
    row[i].resize(n);
}

现在行的所有元素的大小都是 n