#include <iostream>
#include <stdint.h>
#include <vector>
#include <algorithm>
#include <set>
int main()
{
{
std::cout << "test erase item from std::vector using reverse_iterator" << std::endl;
std::vector<int> v;
for(int i = 0 ; i < 5 ; i++)
{
v.push_back(i+1);
}
std::vector<int>::reverse_iterator ri;
for( ri = v.rbegin() ; ri != v.rend(); )
{
if(*ri == 2 || *ri == 4)
{
ri = std::vector<int>::reverse_iterator( ++ v.erase( --ri.base() ) );
}
else
{
ri++;
}
}
std::vector<int>::iterator it;
for(it = v.begin() ; it != v.end() ; it++)
{
std::cout << *it << std::endl;
}
}
{
std::cout << "test erase item from std::set using reverse_iterator" << std::endl;
std::set<int> m;
for(int i = 0 ; i < 5 ; i++)
{
m.insert(i+1);
}
std::set<int>::iterator it;
std::set<int>::reverse_iterator ri;
for(ri = m.rbegin() ; ri != m.rend() ; )
{
if(*ri == 2 || *ri == 4)
{
m.erase( (++ri).base() );
}
else
{
ri++;
}
}
for(it = m.begin() ; it != m.end() ; it++)
{
std::cout << *it << std::endl;
}
}
}