如何删除STL指针列表?

1 c++ iterator memory-leaks stl list

我有一对配对列表.迭代列表并删除第一个和第二个元素是一个好主意吗?其中的对象分配有新的.

list<pair<string,GraphObject*>>* table;
for(i=0; i< length; i++){
    it = table[i].begin();
    while(it != table[i].end()){
        delete (*it).second;
        delete &(*it).first;
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:字符串没有分配新,我知道现在我没有删除它.可以这样删除第二个吗?

bil*_*llz 5

看起来你真正需要的是std::map智能指针

std::map<std::string, std::shared_ptr<GraphObject>> table;
Run Code Online (Sandbox Code Playgroud)

要清除表格,您只需写:

table.clear();
Run Code Online (Sandbox Code Playgroud)

如果你必须使用std :: list,仍然使用智能指针,你仍然只需要调用table.clear();清除整个表.

std::list<std::pair<std::string, std::shared_ptr<GraphObject>>> table;
Run Code Online (Sandbox Code Playgroud)