почему не удаляются дубликаты из вектора?
#include <vector>
#include <iostream>
#include <algorithm>
#include <time.h>
using namespace std;
void printVector(vector<int> & v);
int main() {
vector<int> v;
srand(time(0));
for (int i = 0; i < 10; i++){
v.push_back(rand() % 9);
}
printVector(v);
sort(v.begin(), v.end());
cout << endl;
printVector(v);
unique(v.begin(), v.end()); // не работает
cout << endl;
printVector(v);
return 0;
}
void printVector(vector<int> & v){
for (vector<int>::iterator it = v.begin(); it != v.end(); it++){
cout << *it << endl;
}
}
Делайте так:
v.erase(
unique(v.begin(), v.end()),
v.end());
Дело в том, что std::unique лишь сдвигает дублирующиеся элементы в конец вектора, но не удаляет их оттуда. (Он также возвращает итератор, указывающий на первый из "ненужных" элементов.)
Продвижение своими сайтами как стратегия роста и независимости