题
只是一个快速的问题,如果有话说:
using namespace std;
map< int, vector< string > > map1;
.
或甚至:
map< int, map< int, vector< string > > > map2;
.
,只是你得到正确的想法:
map< int, map< int, map< int, vector< string > > > > map3;
.
如果我只是:
map1.clear();
map2.clear();
map3.clear();
.
它是安全的,因为它将在地图上清空所有内容以及其嵌套地图,向量,列表等。?
注意: 我知道如果您使用指针,您需要手动浏览并删除,或者如果地图脱离了范围,那么它也应该没问题,我只在这种情况下在范围和堆栈上时特别感兴趣。
解决方案
其他提示
是这是完全安全的。STL容器处理内存管理。
但是,如果您将指针存储到您为您分配的对象,您也必须自己删除:std::vector<MyClass*> vec;
vec.push_back(new MyClass());
vec.clear(); // you get a memory leak here because you did not delete the object you allocated.
. 不隶属于 StackOverflow