STL:unqiue
阿新 • • 發佈:2020-07-01
STL unique
簡介
用於元素去重,但不會真的刪除,可以看作是將相鄰的重複元素去除,用後面的不相同的元素補上來。
因為unique函式是針對相鄰重複元素的,所以一般會先進行排序再unique
函式原型
iterator unique(iterator it_1,iterator it_2);//去重範圍(it_1,it_2)
iterator unique(iterator it_1,iterator it_2,bool MyFunc);//MyFunc指的是自定義元素是否相等
//sort怎麼用,unique就怎麼用
//PS:unique的返回值是開始重複的第一個元素
例子
//1. 直接應用 int main() { int a[10]={1,2,2,3,4,5,6,6,7,7}; unique(a,a+10); for (int i=0;i<10;i++) cout<<setw(5)<<a[i]; return 0; } /* 初始陣列:1 2 2 3 4 5 6 6 7 7 去重後的:1 2 3 4 5 6 7 6 7 7 */ //2. 真正的刪除元素 int main() { vector<int> a ={1,2,2,3,4,5,6,6,7,7}; vector<int>::iterator it_1 = a.begin(); vector<int>::iterator it_2 = a.end(); vector<int>::iterator new_end; new_end = unique(it_1,it_2); //注意unique的返回值,是重複的第一個元素 a.erase(new_end,it_2); //這樣就可以直接刪了 for(int i=0;i<a.size();i++) cout<<setw(5)<<a[i]; return 0; }