1

我正在尝试创建一个 nxn 向量,以后可以cout将其作为表/矩阵。Xcode 指向=infor循环并告诉我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));
}

我的猜测是它与我在循环column内声明新向量的方式有关。for非常感谢任何帮助/建议。谢谢。

4

3 回答 3

3

简单的解决方案是使用 的相关构造函数std::vector,将其初始化为n每个具有值的元素val- 不需要循环。

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

有了您的原始片段,我们将得到以下内容,它将初始化 row 以具有n std::vector,每个都有n元素。

std::vector<std::vector<int> > row (n, std::vector<int> (n));
于 2015-03-16T09:12:06.977 回答
2

尝试以下

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 ) );
于 2015-03-16T09:12:27.453 回答
0

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

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

现在 row 的所有元素都是 size n

于 2015-03-16T09:13:00.837 回答