C++地图销毁

C++ map destruction

本文关键字:地图 C++      更新时间:2023-10-16

我想清除析构函数中的映射,但我不知道它是否为空。如果我按如下方式清除它可以吗?

for(std::map<int, int *>::iterator it = m_map.begin(); it != m_map.end(); ++it)
{ 
   delete it->second;
}
m_map.clear();    

或者我还应该在上述操作周围放置一个 if 条件,例如 if(!m_map.empty((({} 以检查它是否为空。

如果映射为空,则m_map.begin()将与m_map.end()相同,因此循环不会执行任何操作。 m_map.clear()(或者更确切地说~std::map会发生,但这会做clear()或等效的(将由编译器作为析构函数的一部分提供的析构函数自动发生,因此不需要。

对于空地图,代码是可以的。m_map.begin(( 将等于 m_map.end((,因此如果映射为空,则 for 循环体不会执行。

如果它为空,则 for 循环不会执行,因此它不会有任何区别。