C++;尝试创建向量向量时出现分段错误 我想在C++中创建一个向量向量,其中n*2是由用户给出的n(行)。我试图使用for循环在这个向量中插入值,但一旦给出n(行)的值,就会出现分段错误 怎么办 #include <iostream> #include <vector> #include <cstdlib> #define col 2 using namespace std; int main() { int row; cin >> row; vector<vector<int>> vec; for (int i = 0; i < row; ++i) { for (int j = 0; j < col; ++j) cin >> vec[i][j]; } return 0; } #包括 #包括 #包括 #定义列2 使用名称空间std; int main() { int行; cin>>世界其他地区; 向量向量机; 对于(int i=0;ivec[i][j]; } 返回0; }

C++;尝试创建向量向量时出现分段错误 我想在C++中创建一个向量向量,其中n*2是由用户给出的n(行)。我试图使用for循环在这个向量中插入值,但一旦给出n(行)的值,就会出现分段错误 怎么办 #include <iostream> #include <vector> #include <cstdlib> #define col 2 using namespace std; int main() { int row; cin >> row; vector<vector<int>> vec; for (int i = 0; i < row; ++i) { for (int j = 0; j < col; ++j) cin >> vec[i][j]; } return 0; } #包括 #包括 #包括 #定义列2 使用名称空间std; int main() { int行; cin>>世界其他地区; 向量向量机; 对于(int i=0;ivec[i][j]; } 返回0; },c++,for-loop,vector,segmentation-fault,C++,For Loop,Vector,Segmentation Fault,在插入元素之前,需要调整向量的大小。或者使用push_back以增量方式插入 vector<vector<int>> vec; vec.resize(row); for (int i = 0; i < row; ++i) { vec[i].resize(col); for (int j = 0; j < col; ++j) { cin >&

在插入元素之前,需要调整向量的大小。或者使用
push_back
以增量方式插入

    vector<vector<int>> vec;
    vec.resize(row);
    
    for (int i = 0; i < row; ++i)
    {
        vec[i].resize(col);

        for (int j = 0; j < col; ++j)
        {
            cin >> vec[i][j];
        }
    }
vec;
调整向量大小(行);
对于(int i=0;i>vec[i][j];
}
}
或:

vec;
调整向量大小(行);
对于(int i=0;i>值;
vec[i]。推回(值);
}
}

在这个构造之后,您知道它是空的,对吧?
vec[0][0]
是超出范围的,因为
vec
是空的。您需要调整父向量和每个子向量的大小()(最好是,因为您有信息)或者向后推(),但是效率不高。那么如何调整每个子向量的大小呢?例如,我添加了一行“vec.resize(row)”现在回答明显的重复有什么意义?如果你认为我链接到的dupe不够好,你可以找到另一个-我们这里应该有很多。@Evg-如果你能找到一个重复的问题并做“投票关闭”的事情,我会和你一起关闭它。我已经找到至少一个dupe,并打算将另一个添加到列表中,但出于某种原因,你重新提出了这个问题。你的被骗者的链接是什么?我认为这是一个链接到通用的“如何解决分割错误”问题。在这种情况下,这显然是一堂关于如何调整向量大小的课。在这里共享链接,如果我认为这是同一个问题,我将删除此答案并与您关闭它。
    vector<vector<int>> vec;
    vec.resize(row);
    
    for (int i = 0; i < row; ++i)
    {

        for (int j = 0; j < col; ++j)
        {
            int value;
            cin >> value;
            vec[i].push_back(value);
        }
    }