2D矢量给出分段故障

Bor*_*ain 3 c++ vector segmentation-fault

我正在尝试使用矢量创建一个2D数组.我写了以下代码:

int main() {
    vector< vector<int> > v;

    int i, j;
    for(i=0; i<11; i++)
        for(j=0; j<11; j++)
            v[i].push_back(j);
    for(i=0; i<11; i++) {
        for(j=0; j<11; j++)
            cout<<v[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在我期待它打印数字0到10,十一次(每次都在一个新行).但是代码给出了运行时错误(分段错误).谁能告诉我哪里出错了?

谢谢.

San*_*dri 7

当你声明任何东西的矢量时,它还没有任何元素.

从而:

v[i].push_back(j)
Run Code Online (Sandbox Code Playgroud)

试图将j插入到位置i处的向量v内的不存在的向量中.

在这种情况下,你也知道的大小,你应该初始化您在构造函数中想要的元素数量的载体:

vector<vector<int> > v(11);
Run Code Online (Sandbox Code Playgroud)

初始化向量v,其中有11个空向量.