unique()函数

unique函数属于STL中比较常用函数,它的功能是元素去重。即”删除”序列中所有相邻的重复元素(只保留一个)。此处的删除,并不是真的删除,而是指重复元素的位置被不重复的元素给占领了(详细情况,下面会讲)。由于它”删除”的是相邻的重复元素,所以在使用unique函数之前,一般都会将目标序列进行排序。 二.函数原型 unique函数的函数原型如下: 1.只有两个参数,且参数类型都是迭代器: iterator unique(iterator it_1,iterator it_2); 这种类型的unique函数是我们最常用的形式。其中这两个参数表示对容器中[it_1,it_2)范围的元素进行去重(注:区间是前闭后开,即不包含it_2所指的元素),返回值是一个迭代器,它指向的是去重后容器中不重复序列的最后一个元素的下一个元素。 unique函数的去重过程实际上就是不停的把后面不重复的元素移到前面来,也可以说是用不重复的元素占领重复元素的位置。 2.unique函数通常和erase函数一起使用,来达到删除重复元素的目的。(注:此处的删除是真正的删除,即从容器中去除重复的元素,容器的长度也发生了变换;而单纯的使用unique函数的话,容器的长度并没有发生变化,只是元素的位置发生了变化)关于erase函数的用法,可以参考:http://www.cnblogs.com/wangkundentisy/p/9023977.html。下面是一个具体的实例: #include #include #include using namespace std; int main() { vector a ={1,3,3,4,5,6,6,7}; vector::iterator it_1 = a.begin(); vector::iterator it_2 = a.end(); vector::iterator new_end; new_end = unique(it_1,it_2); //注意unique的返回值 a.erase(new_end,it_2); cout<<"删除重复元素后的 a : "; for(int i = 0 ; i < a.size(); i++) cout<
posted @ 2021-11-29 12:22  Night_Voyager-qaq  阅读(444)  评论(0)    收藏  举报
Live2D