Hi,
I heard that erasing elements using iterator is dangerous.
But I tried the below program in gcc and it is running fine.
Please explain how it is dangerous

Code:
#include<vector>
#include<iterator>
#include<iostream>
using namespace std;
int main()
{
    vector<int>vec;
    vec.push_back(123);
    vec.push_back(12);
    vec.push_back(23);
    vec.push_back(123);
    vec.push_back(1123);
    vec.push_back(111);
    vec.push_back(2223);

    copy(vec.begin(),vec.end(),ostream_iterator<int>(cout,"---"));
    cout<<endl;
    vector<int>::iterator itr;
    for(itr=vec.begin();itr!=vec.end();itr++)
    {
        if(*itr == 123)
            vec.erase(itr);
    }

    copy(vec.begin(),vec.end(),ostream_iterator<int>(cout,"---"));
    cout<<endl;
}
output is:
123---12---23---123---1123---111---2223---
12---23---1123---111---2223---