#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int ia[] = {5, 3, 1, 3, 2, 5};
vector<int> ivec(ia, ia + sizeof(ia) / sizeof(int));
// sort unique erase
sort(ivec.begin(), ivec.end());
vector<int>::iterator iter = unique(ivec.begin(), ivec.end());
ivec.erase(iter, ivec.end());
return 0;
}
由于Algorithm nevers execute container operations的前提,unique() algorithm无法更改container的size,所以unique将多出来的element放到container的尾端,并传回一个redundant iterator,只要配合erase(),就可将redundant刪除。
所以sort->unique->erase是unique的标准动作