只是一个快速的问题,如果有话说:

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容器,它们的析构函数将清除容器。

阅读更多关于 stl容器值得注意的是 std::map的析构函数

其他提示

是这是完全安全的。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.
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top