【发布时间】:2012-11-16 02:20:22
【问题描述】:
我有一个 MatrixGraph 类,其成员变量 M 的类型为 vector<vector<double> >。我有一个接受无符号的构造函数,并从该输入生成一个 NxN 矩阵,我想将它初始化为零。问题是当我运行我的代码时,调试器会在我尝试分配东西时启动。我试过方法,第一种:
MatrixGraph::MatrixGraph(unsigned num_nodes) {
for(int i = 0;i < num_nodes;i++) {
for(int j = 0;j < num_nodes;j++) {
M[i][j] = 0.0;//breaks on this line
}//end i for loop
}//end j for loop
}
我尝试过的第二种方法是在这里找到的,但也没有用:
MatrixGraph::MatrixGraph(unsigned num_nodes) {
for(int i = 0;i < num_nodes;i++) {
M[i].resize(num_nodes);//breaks on this line
}
}
我在这里评论了调用堆栈的最后一行在我得到错误之前的位置。调用堆栈上的下一行显示了类向量,并说我的 Pos 大于我的向量的大小。我假设这是一个大小为零的矩阵,但我不知道为什么我不能让它更大。有什么建议么?
谢谢!
【问题讨论】:
-
为什么 'i' 和 'j' 也不是无符号的,因为 'num_nodes' 是无符号的?最好还是使用 size_t