1. map的erase函数使用
这里首先要注意,C++针对map的erase函数有不同的函数原型,这往往是出现问题的关键所在。根据参考文献1:
在C++98中:
?
1 2 3 4 5 |
|
在C++11中:
?
1 2 3 4 5 |
|
这直接导致了在使用map类型的容器时,返回值可能不是指向当前删除元素的下一个迭代器的位置。
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
因此,method 2适合于C++11标准,而大多数时候,我们目前用的都是C++98标准,应该采用method 1.
2. vector的erase方法
根据文献2,:
c++98和c++11中,vector的erase方法基本上形式是一致的,只不过传入参数的迭代器的形式有所变化,在使用上,都采用类似于上述method
2的方法。
c++98:
iterator erase (iterator position);
iterator erase (iterator first,
iterator last);
c++11:
iterator erase (const_iterator position);
iterator erase (const_iterator
first, const_iterator last);
这点务必引起注意。
Reference
[1]http://www.cplusplus.com/reference/vector/vector/erase/
[2]http://www.cplusplus.com/reference/map/map/erase/
[3]http://www.cppblog.com/abware/archive/2014/04/22/72459.html
map 和 vector 的erase函数说明,布布扣,bubuko.com