Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 动态矩阵与C++;:分段故障_C++_Dynamic_Vector_Matrix_Segmentation Fault - Fatal编程技术网

C++ 动态矩阵与C++;:分段故障

C++ 动态矩阵与C++;:分段故障,c++,dynamic,vector,matrix,segmentation-fault,C++,Dynamic,Vector,Matrix,Segmentation Fault,可能重复: 我在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)

可能重复:

我在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;
}
}
无符号N=1000;
向量矩阵;

对于(unsigned i=0;i您只是创建了两个空向量,使用
操作符[]
是未定义的行为。如果可能的话,它们就像大小为0的数组

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

vector<vector<double>> Matrix(N, vector<double>(N));
向量矩阵(N,向量(N));

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

如果您列出的代码正是导致问题的代码,那么您的问题是您实际上没有给“矩阵”一个大小

向量矩阵(N,向量(N));
我会那样做的

将来要调试segfaults,您可以先编译,不使用优化和调试符号,然后在调试器(如gdb)中运行,并在sefault之后进行回溯。回溯在请求帮助时也很有用

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