矢量在地图里面是清晰安全的吗?

问题描述 投票:4回答:2

只是一个简单的问题,如果你有说。

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();

它是否安全,因为它将清空地图中的所有东西 和它的嵌套地图,向量,列表等?

注:我知道如果你使用指针,你需要手动去删除,或者如果地图出了范围,它应该也没问题,我只对这种情况特别感兴趣,当在范围内和堆栈上。

c++ dictionary vector stl
2个回答
4
投票

是的,一个map会销毁所有组件。

如果它的组件是STL容器,那么它们的析构器将清除容器。

阅读更多关于 STL容器 尤其是 破坏者 std::map


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.
© www.soinside.com 2019 - 2024. All rights reserved.