unique (ForwardIterator first, ForwardIterator last);ios
unique (ForwardIterator first, ForwardIterator last, BinaryPredicate pred);算法
類屬性算法unique的做用是從輸入序列中「刪除」全部相鄰的重複元素。該算法刪除相鄰的重複元素(不相鄰的元素沒法刪除),code
而後從新排列輸入範圍內的元素(沒有進行排序,按照原序列排列),而且返回一個迭代器(容器的長度沒變,只是元素順序排序
改變了),表示無重複的值範圍得結束。ci
unique_copy (InputIterator first, InputIterator last,OutputIterator result);it
unique_copy (InputIterator first, InputIterator last,OutputIterator result, BinaryPredicate pred);io
unique_copy 惟一的區別在於:unique_copy 接受第三個迭代器實參,用於指定複製不重複元素的目標序列。ast
ex:function
// unique algorithm example #include <iostream>
#include <algorithm> #include <vector> bool myfunction (int i, int j) { return (i==j); } int main () { int myints[] = {10,20,20,20,30,30,20,20,10}; // 10 20 20 20 30 30 20 20 10 std::vector<int> myvector (myints,myints+9); // using default comparison: std::vector<int>::iterator it; it = std::unique (myvector.begin(), myvector.end()); // 10 20 30 20 10 ? ? ? ? // ^ myvector.resize( std::distance(myvector.begin(),it) ); // 10 20 30 20 10 // using predicate comparison: std::unique (myvector.begin(), myvector.end(), myfunction); // (no changes) // print out content: std::cout << "myvector contains:"; for (it=myvector.begin(); it!=myvector.end(); ++it) std::cout << ' ' << *it; std::cout << '\n'; return 0; }