Possible Duplicate:
Matrix Arithmetic using Vectors in C++ causing segmentation faults




我用C ++创建了以下简单代码,为动态矩阵分配了一些值:

unsigned N = 1000;
vector<vector<double> > Matrix;

for (unsigned i=0; i<(N-1); ++i) {
    for (unsigned j=0; j<(N-1); ++j) {

        if ((i>(N/4-1) && i<(3*N/4-1)) || (j>(N/4-1) && j<(3*N/4-1)))
            Matrix[i][j] = 1;

        else if (i==0 || i==(N-1) || j==0 || j==(N-1))
            Matrix[i][j] = 0;
}
}


编译器不会返回任何问题,但是当我尝试运行该程序时,它将返回:Segmentation Fault。我的错误在哪里?

感谢您的关注。

最佳答案

您只是创建两个空向量,并且使用operator[]是未定义的行为。如果可能的话,它们就像大小为0的数组。

您必须创建具有容量的向量,并且每个元素都将默认初始化为0:

vector<vector<double>> Matrix(N, vector<double>(N));


第一个参数是外部vector的大小,第二个参数是要复制到每个元素中的值,它本身是N double的向量。

关于c++ - 动态矩阵和C++:段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13035657/

10-09 06:07