我试图创建一个n x n向量,我可以稍后cout
作为表/矩阵。 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也不喜欢它,这一次指向column
并说Expected ')'
:
int n=5;
vector< vector<int> > row;
for (int i=0; i<n; i++) {
row.push_back(new vector<int> column(n));
}
我的猜测是,它与我在column
循环中声明新向量for
的方式有关。非常感谢任何帮助/建议。感谢。
答案 0 :(得分:3)
简单的解决方案是使用相关的constructor of std::vector
,将其初始化为n
元素,每个元素的值为val
- 无需循环。
std::vector<T> (n, val);
使用原始代码段,我们最终会得到以下内容,它会将行初始化为n
std :: vector ,每个都有n
个元素。
std::vector<std::vector<int> > row (n, std::vector<int> (n));
答案 1 :(得分:1)
尝试以下
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 ) );
答案 2 :(得分:0)
当调用row
的构造函数时,所有元素也被初始化。
我认为这段代码可以满足您的需求:
for (int i=0; i<n; i++) {
row[i].resize(n);
}
现在,行的所有元素的大小都为n
。