我应该如何在容器指针容器中创建新元素?
我有填充邻接列表的代码,所以我需要每个顶点的相邻节点列表(也就是向量中的索引,输入是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填写正常,但结果表明图中的元素只是空列表
答案 0 :(得分:0)
在这一行
graph.push_back(&adjListType(adjList));
删除&amp ;.这里发生的是你创建一个新的adjListType,其内容为adjList,获取指向该堆栈对象的指针并将其添加到图形中。但是,该对象的范围仅限于您的if,因此很快就会被销毁。
你不必在这里使用列表指针,它会稍微降低性能,但会让你头疼吗