如何在结构体上初始化一个向量的向量?

56

如果我有一个N x N的矩阵

vector< vector<int> > A;

我该如何初始化它?

我尝试了但没有成功:

 A = new vector(dimension);

都不是:

 A = new vector(dimension,vector<int>(dimension));

1
你可能应该查阅一本入门书。new 返回指向其分配的内容的指针(在这里不需要)。 - Borgleader
vector<vector<int>> MyMatrix[4][4]; //同样有效 - Mich
4
这个问题不是一个重复问题。所谓的相关链接是针对另一个问题的,虽然其中排名最高的答案也回答了这个问题,但你在搜索这个问题时找不到它。 - smrdo_prdo
2个回答

114

使用new进行动态分配内存,它会返回一个指向动态分配对象的指针。

由于A是自动变量,因此您没有理由使用new。您可以直接使用构造函数初始化A

vector<vector<int> > A(dimension, vector<int>(dimension));

好的,我找到了问题所在。我没有提到我有一个指向结构体的指针,它包含那个向量。而且按照你说的做:myStructVble->A(dimension, vector<int>(dimension)); ,它会抛出“函数不匹配”的错误。 - anat0lius
4
你需要在结构体的构造函数中初始化它,或者从临时变量复制到成员变量:myStructVble->A = vector<vector<int>>(dimension, vector<int>(dimension)); - Joseph Mansfield

15

像这样:

#include <vector>

// ...

std::vector<std::vector<int>> A(dimension, std::vector<int>(dimension));

(在C++11之前,你需要在尖括号之间留下空格。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接