#include <iostream>
#include <map>
using namespace std;
int main()
{
map<int, int> test_map;
test_map[1] = 1;
test_map[2] = 2;
test_map[3] = 3;
test_map[4] = 4;
for( std::map<int, int>::iterator iter = test_map.begin();
iter != test_map.end(); ++ iter )
{
cout << iter->first << " " << iter->second << endl;
}
int count = 0;
// delete the element
for( std::map<int, int>::iterator iter = test_map.begin();
iter != test_map.end(); )
{
std::map<int, int>::iterator it_back = iter;
bool is_first_element = false;
if(it_back != test_map.begin())
it_back --;
else
is_first_element = true;
// delete the element that matches the specific condition
if( iter->first % 2 == 0)
{
test_map.erase(iter);
if(is_first_element)
iter = test_map.begin();
else
iter = ++ it_back;
}else iter ++;
count ++;
}
cout << "use count:" << count << endl;
cout << "after delete " << endl;
for( std::map<int, int>::iterator iter = test_map.begin();
iter != test_map.end(); ++ iter)
{
cout << iter->first << " " << iter->second << endl;
}
system("pause");
return 0;
}
- 1 1
- 2 2
- 3 3
- 4 4
- use count:4
- after delete
- 1 1
- 3 3