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)
编辑:字符串没有分配新,我知道现在我没有删除它.可以这样删除第二个吗?
看起来你真正需要的是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)