#include <list>
#include <algorithm>
#include <iostream>
#include <iterator>
using namespace std;
int main()
{
std::list<int> my_list;
my_list.push_back(3);
my_list.push_back(2);
my_list.push_back(3);
my_list.push_back(4);
my_list.push_back(5);
my_list.push_back(3);
my_list.push_back(7);
int n = 0;
cout << "Before removing:\n";
for(list<int>::iterator i=my_list.begin(); i!=my_list.end(); ++i, ++n)
{
cout << "list[" << n + 1 << "] " << *i << endl;
}
int j = 0;
for(list<int>::reverse_iterator i=my_list.rbegin(); i!=my_list.rend();)
{
if(*i == 3)
{
cout << "iteration " << j + 1 << endl;
++i;
my_list.erase(i.base());
++j;
}
else
++i;
}
cout << "After removing:\n";
n = 0;
for(list<int>::iterator i=my_list.begin(); i!=my_list.end(); ++i, ++n)
{
cout << "list[" << n + 1 << "] " << *i << endl;
}
}
I2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGl0ZXJhdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkKewogICAgc3RkOjpsaXN0PGludD4gbXlfbGlzdDsKICAgIG15X2xpc3QucHVzaF9iYWNrKDMpOwogICAgbXlfbGlzdC5wdXNoX2JhY2soMik7CiAgICBteV9saXN0LnB1c2hfYmFjaygzKTsKICAgIG15X2xpc3QucHVzaF9iYWNrKDQpOwogICAgbXlfbGlzdC5wdXNoX2JhY2soNSk7CiAgICBteV9saXN0LnB1c2hfYmFjaygzKTsKICAgIG15X2xpc3QucHVzaF9iYWNrKDcpOwoKICAgIGludCBuID0gMDsKCiAgICBjb3V0IDw8ICJCZWZvcmUgcmVtb3Zpbmc6XG4iOwogICAgZm9yKGxpc3Q8aW50Pjo6aXRlcmF0b3IgaT1teV9saXN0LmJlZ2luKCk7IGkhPW15X2xpc3QuZW5kKCk7ICsraSwgKytuKQogICAgewogICAgICAgIGNvdXQgPDwgImxpc3RbIiA8PCBuICsgMSA8PCAiXSAiIDw8ICppIDw8IGVuZGw7CiAgICB9CgogICAgaW50IGogPSAwOwogICAgZm9yKGxpc3Q8aW50Pjo6cmV2ZXJzZV9pdGVyYXRvciBpPW15X2xpc3QucmJlZ2luKCk7IGkhPW15X2xpc3QucmVuZCgpOykKICAgIHsKICAgICAgICBpZigqaSA9PSAzKQogICAgICAgIHsKICAgICAgICAgICAgY291dCA8PCAiaXRlcmF0aW9uICIgPDwgaiArIDEgPDwgZW5kbDsKICAgICAgICAgICAgKytpOwogICAgICAgICAgICBteV9saXN0LmVyYXNlKGkuYmFzZSgpKTsKICAgICAgICAgICAgKytqOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICAgICsraTsKICAgIH0KCiAgICBjb3V0IDw8ICJBZnRlciByZW1vdmluZzpcbiI7CiAgICBuID0gMDsKICAgIGZvcihsaXN0PGludD46Oml0ZXJhdG9yIGk9bXlfbGlzdC5iZWdpbigpOyBpIT1teV9saXN0LmVuZCgpOyArK2ksICsrbikKICAgIHsKICAgICAgICBjb3V0IDw8ICJsaXN0WyIgPDwgbiArIDEgPDwgIl0gIiA8PCAqaSA8PCBlbmRsOwogICAgfQp9