#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
    std::vector<int> container = {1,2,3,4,3,2,1,2,3,4};

    // output
    std::cout << "Before: ";
    for(int n: container) std::cout << n << ' ';
    std::cout << '\n';
    
    // erase every 2 using erase-remove
    int temp = 2;
    container.erase( std::remove(container.begin(), container.end(), temp),
                     container.end() );
    
    // output
    std::cout << "After erasing 2: ";
    for(int n: container) std::cout << n << ' ';
    std::cout << '\n';

    // same thing (but slower) with a loop
    temp = 3;
    std::vector<int>::iterator itr1, itr2 = container.end();
    for (itr1=container.begin(); itr1 != itr2; )
    { 
        if(*itr1==temp)
            itr1 = container.erase(itr1);
        else
            ++itr1;
    }

    // output
    std::cout << "After erasing 3: ";
    for(int n: container) std::cout << n << ' ';
    std::cout << '\n';
}
