为List内部结构分配空间

Nan*_*hal 1 c++ stl

我的结构如下:

struct Vertex{
      list<int> q;
};
Run Code Online (Sandbox Code Playgroud)

我创建了一个大小为10的数组,如下所示:

Vertex *ver = (Vertex*) malloc(10 * sizeof(Vertex));
Run Code Online (Sandbox Code Playgroud)

现在我想在列表中插入.我很难搞清楚为什么会出现分段错误:

ver[1].q.push_back(10);
Run Code Online (Sandbox Code Playgroud)

有人可以解释这里有什么问题吗?

Bo *_*son 5

malloc只是分配内存,它不会在该内存中构造任何对象.

你可以尝试

Vertex* ver = new Vertex[10];
Run Code Online (Sandbox Code Playgroud)

初始化Vertex结构及其list成员.

创建10个Vertex对象的更简单方法是

std::vector<Vertex>  ver(10);
Run Code Online (Sandbox Code Playgroud)

这也使您免于delete[]以后使用对象的麻烦.