1.#include <iostream>
1.#include <map>
2.using namespace std;
3.
4.
5.int main()
6.{
7. map<int, int> test_map;
8. test_map[1] = 1;
9. test_map[2] = 2;
10. test_map[3] = 3;
11. test_map[4] = 4;
12.
13. for( std::map<int, int>::iterator iter = test_map.begin();
14. iter != test_map.end(); ++ iter )
15. {
16. cout << iter->first << " " << iter->second << endl;
17. }
18.
19. int count = 0;
20.
21. // delete the element
22. for( std::map<int, int>::iterator iter = test_map.begin();
23. iter != test_map.end(); )
24. {
25. std::map<int, int>::iterator it_back = iter;
26. bool is_first_element = false;
27. if(it_back != test_map.begin())
28. it_back --;
29. else
30. is_first_element = true;
31.
32. // delete the element that matches the specific condition
33. if( iter->first % 2 == 0)
34. {
35. test_map.erase(iter);
36.
37. if(is_first_element)
38. iter = test_map.begin();
39. else
40. iter = ++ it_back;
41. }else iter ++;
42.
43. count ++;
44. }
45.
46. cout << "use count:" << count << endl;
48. cout << "after delete " << endl;
49.
50. for( std::map<int, int>::iterator iter = test_map.begin();
51. iter != test_map.end(); ++ iter)
52. {
53. cout << iter->first << " " << iter->second << endl;
54. }
55.
56. system("pause");
7. return 0;
58.
59.}
运行结果
1 1
2 2
3 3
4 4
use count:4
after delete
1 1
3 3