Witam wszystkich jak widać mam fajny programik, który działa dobrze ale nie do końca. Program ma wcześniej wczytane liczby posortować wyświetlić i usunąć powtarzające się liczby. Nie wiem dlaczego ale moja pętla for z funkcją erase zamiast usuwać powtarzający się element usuwa mi co drugi. Czy ktoś może mi pomóc, jak zmieniam sobie chociaż troszke pętle albo iterator to wszystko mi pada.
To mój kod:
#include <cstdlib>
#include <iostream>
#include <vector>
#include <list>
#include<algorithm>
using namespace std;
class wypisz{
public:
void operator()(const int& v){
cout<<"liczby:"<<v<<endl;
}
};
int main(int argc, char *argv[]){
vector<int> v;
int i;
while(true) {
cout<<"Podaj liczbe :"<<endl;
cin>>i;
v.push_back(i);
char c='n';
cout<<"Czy chcesz dalej wprowadzac TAK/NIE"<<endl;
cin>>c;
if(c=='n') break;
}
cout<<"sortowanie"<<endl;
sort(v.rbegin(),v.rend());
cout<<endl<<"po sortowaniu:"<<endl;
for_each(v.begin(),v.end(),wypisz());
for (vector<int>::iterator i=v.begin();i<v.end();++i){
if (i==i){ //<b>tutaj mam problem</b>
v.erase(i);
}
}
cout<<endl<<"po usunieciu elementu"<<endl;
for_each(v.begin(),v.end(),wypisz());
system("PAUSE");
return EXIT_SUCCESS;
}