key map判断key是否存在 - C++STL map::擦除不存在的键




map遍历 map查找 (3)

关于C ++ STL地图,按键删除: -

 size_type map::erase ( const key_type& x );

擦除不存在的密钥是否合法? 即下面的片段好吗?

map<char,int> mymap;
mymap['c']=30;
mymap.erase('c');
mymap.erase('c');
mymap.erase('D');

干杯


Answers

是的,实际上, std::map::erase()返回一个size_type,表示擦除的键数。 因此,它返回0表示没有擦除,1表示擦除地图的内容。



在Unix系统中,习惯于运行具有内存限制的长时间运行的进程(使用ulimit ),这样它就不会占用系统的所有内存。 如果您的程序达到该限制,您将获得std::bad_alloc

OP编辑的更新:从内存不足情况恢复的程序的最典型情况是垃圾收集系统,然后执行GC并继续。 虽然,这种按需GC实际上只适用于最后的努力; 通常,好的程序会定期尝试GC以减少对收集器的压力。

非GC程序从内存不足的问题中恢复的情况不常见,但对于面向Internet的服务器,恢复的一种方法是简单地拒绝导致内存耗尽“临时”错误的请求。 (“先进先出”战略。)







c++ stl map key erase