На самом деле, у вас просто пара проблем одна за другой.Вы неправильно сравнивали с end()
и увеличивали n
при удалении элемента:
for (iter = v->begin(); iter != v->end()-1; iter++ ){
^^^^^^^^
И
while(iter+n != v->end())
^^
Следующее будет делать то, что вы хотите (и продемонстрировать, чтоработает):
int main()
{
std::vector<const char*> v (4, "this");
std::vector<const char *>::iterator iter;
for (iter = v.begin(); iter < v.end(); iter++ ) {
std::cout << *iter << " ";
}
std::cout << std::endl;
for (iter = v.begin(); iter < v.end(); iter++ ){
const char *aString = *iter;
int n = 1;
while(iter+n < v.end()){
int comparison = strcmp(aString, *(iter+n));
if(comparison == 0){
v.erase(iter + n);
}
else
n++;
}
}
for (iter = v.begin(); iter < v.end(); iter++ ) {
std::cout << *iter << std::endl;
}
}
Вывод:
это это это это
это