とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

std::unique

STL―標準テンプレートライブラリによるC++プログラミング 第2版

// P98 ex05-21.cpp
#include<iostream>
#include<vector>
#include<algorithm>
#include<cassert>
int main(){
 using std::cout;
 using std::endl;
 using std::vector;
 using std::unique;
 using std::copy;
 using std::ostream_iterator;
 cout << "Illustrating the generic unique algorithm." << endl;
 const int a[] = {1, 2, 0, 3, 3, 0, 7, 7, 7, 0, 8};
 const size_t N = sizeof a / sizeof *a;
 vector<int> v(a, a + N);

 const vector<int>::iterator newEnd = unique(v.begin(), v.end());
 // サイズは変わらず
 assert(v.size() == N);
 // 本当に消す
 v.erase(newEnd, v.end());
 assert(v.size() == N - 3);

 copy(v.begin(), v.end(), std::ostream_iterator<int>(cout, " "));
 cout << endl;
}

出力:

Illustrating the generic unique algorithm.
1 2 0 3 0 7 0 8