指向容器的容器

时间:2014-11-17 00:34:07

标签: c++ pointers stl

我应该如何在容器指针容器中创建新元素?

我有填充邻接列表的代码,所以我需要每个顶点的相邻节点列表(也就是向量中的索引,输入是edjes,按第一个节点排序)

typedef list<int>  adjListType;
typedef vector<adjListType*> graphType;


int _tmain(int argc, _TCHAR* argv[])
{
graphType graph;
ifstream ifs("SCC1.txt");

int key, value, prev_key = 0;
list<int> adjList;
while (ifs >> key >> value)
{
    if (prev_key != 0 && prev_key != key)
    {
        graph.push_back(&adjListType(adjList));
        adjList = list<int>();
    }
    adjList.push_back(value);
    prev_key = key;
}

cin.get();
return 0;
}

adjList填写正常,但结果表明图中的元素只是空列表

1 个答案:

答案 0 :(得分:0)

在这一行

graph.push_back(&adjListType(adjList));

删除&amp ;.这里发生的是你创建一个新的adjListType,其内容为adjList,获取指向该堆栈对象的指针并将其添加到图形中。但是,该对象的范围仅限于您的if,因此很快就会被销毁。

你不必在这里使用列表指针,它会稍微降低性能,但会让你头疼吗