C ++如何动态创建2D矢量

时间:2015-03-16 09:05:13

标签: c++ xcode vector 2d-vector

我试图创建一个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的方式有关。非常感谢任何帮助/建议。感谢。

3 个答案:

答案 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