相关疑难解决方法(0)

map.erase(map.end())?

考虑:

#include <map>

int main()
{
    std::map< int, int > m;
    m[ 0 ] = 0;
    m[ 1 ] = 1;

    m.erase( 0 );  // ok
    m.erase( 2 );  // no-op
    m.erase( m.find( 2 ) );  // boom!
}
Run Code Online (Sandbox Code Playgroud)

(好的,所以标题讨论了擦除end()迭代器,但是find会返回end()以查找不存在的键.)

为什么擦除不存在的键OK,但擦除end()会爆炸.我在标准中没有看到任何明确的提及?

我在VS2005上尝试了这个(在调试配置中抛出异常)和GCC 4.0.1(100%CPU).它是依赖于实现的吗?

谢谢.

c++ iterator stl map

21
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×1

iterator ×1

map ×1

stl ×1