创建二维向量时出错.

Als*_*ton -1 c++ g++ vector

我创建了一个名为的类Rect.我想创建一个容纳vector<Rect>指针地址的向量vector<Rect>.

这是我的代码:

std::vector< std::vector<Rect> *> *graph;

    for(int i=0 ; i < 8; i++)
    {
            std::vector<Rect> *vecPtr= new std::vector<Rect>;
            graph->push_back( vecPtr ); 
    }
Run Code Online (Sandbox Code Playgroud)

但是,g ++抱怨"Core Dumped".

  1. 我理解的原因是什么?为什么?
  2. 我该如何解决?正确的代码?

Dav*_*eas 6

尽可能避免使用指针,这显然是一个很好的例子:

std::vector<std::vector<Rect> > graph(8);
Run Code Online (Sandbox Code Playgroud)

那条单行(几乎在概念上?)等同于你的代码,不会泄漏内存,也不会对你进行核心转储.

至于您的特定问题,您从未为矢量矢量分配内存graph,但您尝试访问它graph->push_back(vecPtr).

  • @Stallman你仍然需要在某处存储向量,所以你实际上每个向量都浪费一个指针. (2认同)