如果你说的话,只是一个简单的问题:
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();
它是否安全,因为它会清空地图中的所有内容及其嵌套的地图,矢量,列表等?
注意: 我知道如果你使用指针需要手动浏览和删除,或者如果地图超出范围,它也应该没问题我在范围和堆栈时只对这种情况特别感兴趣。
答案 0 :(得分:3)
答案 1 :(得分:2)
是的,这是非常安全的。 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.