fork download
  1. #include <list>
  2. #include <algorithm>
  3. #include <iostream>
  4. #include <iterator>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10. std::list<int> my_list;
  11. my_list.push_back(3);
  12. my_list.push_back(2);
  13. my_list.push_back(3);
  14. my_list.push_back(4);
  15. my_list.push_back(5);
  16. my_list.push_back(3);
  17. my_list.push_back(7);
  18.  
  19. int n = 0;
  20.  
  21. cout << "Before removing:\n";
  22. for(list<int>::iterator i=my_list.begin(); i!=my_list.end(); ++i, ++n)
  23. {
  24. cout << "list[" << n + 1 << "] " << *i << endl;
  25. }
  26.  
  27. int j = 0;
  28. for(list<int>::reverse_iterator i=my_list.rbegin(); i!=my_list.rend();)
  29. {
  30. if(*i == 3)
  31. {
  32. cout << "iteration " << j + 1 << endl;
  33. ++i;
  34. my_list.erase(i.base());
  35. ++j;
  36. }
  37. else
  38. ++i;
  39. }
  40.  
  41. cout << "After removing:\n";
  42. n = 0;
  43. for(list<int>::iterator i=my_list.begin(); i!=my_list.end(); ++i, ++n)
  44. {
  45. cout << "list[" << n + 1 << "] " << *i << endl;
  46. }
  47. }
Success #stdin #stdout 0.01s 2816KB
stdin
Standard input is empty
stdout
Before removing:
list[1] 3
list[2] 2
list[3] 3
list[4] 4
list[5] 5
list[6] 3
list[7] 7
iteration 1
iteration 2
iteration 3
After removing:
list[1] 2
list[2] 4
list[3] 5
list[4] 7