unique函数用法

unique函数用法

unique包含在头文件

#include <algorithm>

函数作用:“去除”容器或数组中相邻元素之间重复出现的元素

unique函数的三个参数:

1、想要去重的数据集的起始地址

2、想要去重的最后一个元素的下一个元素的地址

3、比较函数(可以省略,也可以自定义,一般不太用到第三个参数)

返回值:返回的是去重后的不重复数列中最后一个元素的下一个元素的地址(注意是类似于0x的真正地址)

注意:

1、该函数并非真正地去除重复元素,只将不重复的元素排在数组最前边,但是去重后的数组最后的元素不变。(注意有一些说法是“去重之后是把重复的元素藏在了最后”, 这种说法是不准确的)

2、针对的是相邻元素,也就是说对于顺序错乱的数组,需要先进行排序,再配合erase后,才可以实现真正意义上的去重(也可以根据返回值枚举不重复的部分)

erase函数是针对容器的函数,不在algorithm库中,因此数组无法使用该函数。

时间复杂度:O(n)

代码案例

#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
	int a[]={2,3,4,4,6};
	//sort(a,a+5);            //一般在使用unique之前都需要进行排序,由于这里是已经排好序的,所以不再使用 
	unique(a,a+5);           //使用unique函数对数组进行去重
	for(int i=0;i<5;i++)
	{
		cout<<"a["<<i<<"]="<<a[i]<<endl;
	}
	cout<<unique(a,a+5)<<endl;    //返回不重复数列中最后一个元素下一个元素的地址 
	cout<<a+4<<endl;              //输出a[4]的地址,发现与unique函数的返回值相同 
	cout<<"不重复数列的长度:"<<unique(a,a+5)-a<<endl;   //不重复序列的长度为4 
}

运行结果

通过运行结果可以看出,unique并不是真正地将重复元素进行了删除,而是不断将不重复的元素移动到数组的前面,最后返回的是返回的是去重后的不重复数列中最后一个元素的下一个元素的地址,如果需要计算该地址所对应的下标,则利用unique(a,a+n)-a即可

(关于unique配合erase函数来实现真正去重的内容,以后再进行补充,现在还没学到)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • unique函数

    现在总结一下unique,unique的作用是“去掉”容器中相邻元素的重复元素(不一定要求数组有序),它会把重复的元素添加到容器末尾(所以数组大小并没有改变),...

    杨鹏伟
  • c++ STL unique函数

    用户2965768
  • C++ STL算法系列4---unique , unique_copy函数

     一.unique函数 类属性算法unique的作用是从输入序列中“删除”所有相邻的重复元素。 该算法删除相邻的重复元素,然后重新排列输入范围内的元素,并且返回...

    猿人谷
  • python函数函数指针用法

    函数指针,主要用于向函数中传递一个函数名用该函数名(即函数指针)可以进行动态策略执行。

    py3study
  • assert()函数用法

    assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h> void a...

    猿人谷
  • SetConsoleTextAttribute函数用法

    很多时候,我们希望编写出能够拥有各种颜色的程序,能够让人眼前一亮,虽然system(color)函数可以设置颜色,但是system(color)函数设置的颜色只...

    花狗Fdog
  • 函数特殊用法与偏函数

    我们今天来给大家讲讲函数的特殊用法,看看函数有哪些特殊的用法,大家是不是已经开始好奇了,函数就是简单的函数呗,咋还有特殊呢?搬好小板凳了吗?马上开始啦~

    数据山谷
  • wp_list_categories()函数使用方法|wordpress函数

      wp_list_categories()函数是将分类以链接的形式罗列出来,点击分类的链接,就可以访问该分类页面。我们有时候会在一些页面调用分类链接,这时这个...

    ytkah
  • python enumerate 函数用法

    程序员同行者
  • malloc函数及用法

    动态存储分配 在数组一章中,曾介绍过数组的长度是预先定义好的,在整个程序中固定不变。C语言中不允许动态数组类型。 例如: int n; scanf("%d",&...

    marsggbo
  • javascript sort 函数用法

    简单的说,sort() 在没有参数时,返回的结果是按升序来排列的。即字符串的Unicode码位点(code point)排序

    Krry
  • javascript sort 函数用法

    简单的说,sort() 在没有参数时,返回的结果是按升序来排列的。即字符串的Unicode码位点(code point)排序

    Krry
  • DoModal 函数的用法

    使用有模式对话框时在对话框弹出后调用函数不会立即返回,而是等到对话框销毁后才会返回(请注意在对话框弹出后其他窗口的消息依然会被传递)。所以在使用对话框时其他窗口...

    用户1154259
  • js 函数function用法

    javascript 函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的。通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传...

    阳光岛主
  • python 函数enumerate用法

    py3study
  • fgets函数的用法

    【原文出处: http://www.cnblogs.com/coder-jhm1314/articles/4561006.html】

    用户7886150
  • Oracle函数sys_connect_by_path用法

    sys_connect_by_path函数是为了配合递归查询的函数,递归查询可以参考我之前的博客:https://blog.csdn.net/u01442739...

    SmileNicky
  • python函数的用法

      3.函数可以当作一个值赋值给一个变量 例:a=myprint()    a()

    py3study
  • count_if函数的用法

    杨鹏伟

扫码关注云+社区

领取腾讯云代金券