为什么这个2D向量会导致段故障(核心转储)

Tau*_*Bai 1 c++ size vector

#include <iostream>
#include <vector>

int main() 
{
    std::vector<std::vector<int>> a;
    a[0] = {1,2,3,4,5};
    a.push_back({12,123,123,1,3,1,23});
    size_t size = a.size();
    std::cout << size << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

g ++编译器传递了这个程序,但是当我运行它时会出现这个错误

分段故障(核心转储)

怎么解决?如何计算此2D矢量中的所有元素?

Rak*_*111 6

在这里a[0] = { 1, 2, 3, 4, 5 };您访问std::vector索引0,但没有std::vector索引0,所以你访问的内存,你不拥有,这将导致分段错误!您必须先分配空间(使用resize),或使用push_back,如下一行.