unique函数用法

article/2025/9/29 1:55:52

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函数来实现真正去重的内容,以后再进行补充,现在还没学到)


http://chatgpt.dhexx.cn/article/rv7X0xgv.shtml

相关文章

MySQL JSON_EXTRACT()、JSON_UNQUOTE() 函数获取JSON串的值

JSON_EXTRACT()函数作用是读取数据库储存的json值&#xff0c;已key、value的形式获取某个键值 如果json字符串是对象{Object} 1&#xff1a;第一个参数为需要查询的json字段 2&#xff1a;第二个参数为json里需要获取的键名 $.key 如果json字符串是数组[Array] 1&#xff1a;…

c++ unique函数

unique函数属于STL中比较常用函数&#xff0c;它的功能是元素去重。即”删除”序列中所有相邻的重复元素(只保留一个)。此处的删除&#xff0c;并不是真的删除&#xff0c;而是指重复元素的位置被不重复的元素给占领了(详细情况&#xff0c;下面会讲)。由于它”删除”的是相邻的…

ubuntu启动后一直黑屏

好奇怪的一件事&#xff0c;昨晚使用完ubuntu后&#xff0c;和往常一样拍了快照&#xff0c;但今天打开后就一直黑屏&#xff0c;就突然的有了自己的思想&#xff0c;任我重启电脑都没有任何用处 我采用的方法 徽标cmd回车&#xff0c;输入如下命令,然后重启电脑 netsh winsoc…

ubuntu虚拟机开机黑屏系列解决办法

ubuntu虚拟机开机黑屏系列解决办法 前记解决方法方法一&#xff1a;方法二&#xff1a;方法三&#xff1a;方法四&#xff1a;方法五&#xff1a;方法六&#xff1a; 后记 前记 ubuntu虚拟机玩的好好的&#xff0c;突然不知怎么着图形界面就卡住了&#xff0c;等待了好一会也不…

记录ubuntu启动黑屏,仅有左上角光标闪烁的解决过程

去年装完显卡驱动后有重启黑屏的经历&#xff0c;所以后来一直没敢装显卡驱动&#xff0c;前段时间需要用显卡驱动跑程序&#xff0c;又装了一次&#xff0c;果不其然黑屏了。 nvidia-smi 是可以显示出显卡信息的&#xff0c;这说明显卡驱动是装上了。 1.首先是试了18 20 22的…

ubuntu虚拟机启动失败黑屏解决方案及原因

背景介绍 某天某个时辰,手残的我想打开VMWare里面的ubuntu虚拟机跑跑Kubernetes突然发现ubuntu虚拟机黑屏无法启动,只有一个光标在闪烁,图形界面就再也打不开了 原因 进入高级模式后发现磁盘占用满了,清除一些文件后ubuntu虚拟机正常启动 解决方案 进入grub模式 一旦启动后…

Ubuntu18的bug导致系统启动后黑屏的问题

这是我在使用Ubuntu18时遇到的问题&#xff0c;文章包含遇到黑屏时的各种原因及解决方法&#xff08;或链接&#xff09;&#xff0c;如果是您在使用Ubuntu18时遇到此问题&#xff0c;建议直接跳转到解决方法处。 问题背景 使用系统 Ubuntu 18.04.1 LTS&#xff08;可以通过…

Ubuntu16.04开机后黑屏无法进入系统登陆界面

之前在写小论文&#xff0c;接近一个月没有用Ubuntu&#xff0c;结果想要切换到Linux下使用Hadoop的时候&#xff0c;在grub界面选择第一项Ubuntu却迟迟无法进入登陆界面&#xff0c;一直卡在原地&#xff0c;特征为长久黑屏/紫屏无响应&#xff0c;无法按ctrlaltF1进入命令行以…

ubuntu启动失败黑屏解决方案

现象 启动直接进入黑屏,左上角有光标但不闪烁,ctrl+alt+fx也无法进入命令行界面 异常前操作 在有程序安装过程中直接reboot,接着就一直如此 最终解决 尝试了很多网上的方法,包括进入grub后按e改磁盘ro为rw啊,进入recovery模式该grub配置啊等等都无效,后来发现这种操…

Ubuntu 20.04 - 21.10进入桌面后黑屏的解决思路+经验总结

引言 之前用Ubuntu 20.04 时候三天两头喜欢折腾功能&#xff0c;每次一折腾完Linux就喜欢要么这里要么哪里撂挑子&#xff0c;进入系统后黑屏就是其中最大的一个问题。 回想刚开始用Linux的小白时期&#xff0c;第一次遇到进入系统后黑屏的时候&#xff0c;虽然之前就听说过桌…

Ubuntu20.04 启动卡在黑屏的解决方法

最近在VM中新安装了Ubuntu20.04&#xff0c;悲催的是启动后一直卡在黑屏&#xff1b;在坑里爬了几天后&#xff0c;终于出坑&#xff1b; 以下是整理的实际操作步骤&#xff0c;希望若有入坑的尽快出坑&#xff1b; 1、启动虚拟机时&#xff0c;进入Grub画面选择相应内核启动…

ubuntu 开机黑屏 解决方案 之一(filesystem readonly)

起因 &#xff1a; 由于本人有不关机的习惯&#xff0c;最近几次早上到公司工作&#xff0c;发现电脑都处于假死状态&#xff0c;显示屏永远处于屏保画面。只好重新启动&#xff0c;但是启动之后 电脑就黑屏&#xff0c;彻彻底底的黑屏&#xff0c;什么都看不到。 解决方案&…

ubuntu启动时黑屏,无法进入登录界面

方式1 1、重新启动客户机 2、点击屏幕立即长按左shift键或ESC 3、出现grub菜单后选择第二个 4、又出现一个列表继续选择第二个 5、下一个页面选择第一个 6、下一个界面点击OK就可以了&#xff0c;但不能保证下次开机时能不能进入 方式2 在vmware中的ubuntu开机时黑屏&#xf…

Ubuntu开机黑屏原因及解决(recovery Mode)

目录 问题描述 解决方法 步骤一 步骤2 总结 恢复模式 问题描述 Linux版本&#xff1a;Ubuntu 16.04 VMware workstation版本&#xff1a; 15 点击启动虚拟机后&#xff0c;经过长时间的等待 (大概2min&#xff0c;正常只需要十几秒)后&#xff0c;显示黑屏&#xff0c…

ubuntu20.04开机黑屏解决方法

问题&#xff1a;开机选择ubuntu20.04系统后&#xff0c;在应显示系统登录界面时黑屏&#xff0c;仅有光标闪烁。如等待时间较久&#xff0c;可能出现ppm init failed -110的错误信息。 情况描述&#xff1a;出现开机问题以来重装过几次系统&#xff0c;换过不同版本的驱动程序…

Ubuntu Linux开机黑屏的永久解决办法

开机之后&#xff0c;没有图形界面&#xff0c;也无法使用命令窗口界面。 解决办法1 对你的电脑来说&#xff0c;这种办法可能只是暂时的解决。重启之后可能又出现黑屏。如果是这样&#xff0c;可以看解决办法2。 因为此时电脑其实是已经可以联网的&#xff0c;如果你之前已…

安装完ubuntu系统在重启时因黑屏启动不了的解决办法

刚安装完ubuntu20.04系统重启时黑屏启动不了的解决办法 码字不易&#xff0c;希望大家能多多关注微信公众号&#xff1a;雨中算法屋&#xff0c;交流更多ubuntu系统的使用和更多算法知识研讨&#xff0c;共同学习&#xff0c;一起进步&#xff0c;有问题也可以关注公众号加我微…

Java 堆栈分析,堆栈区别。

一、栈 1.存放基本变量类型(会包含基本类型的具体数值) 2.引用对象的变量&#xff08;会存放引用在堆里面的具体的地址) 二、堆 1.存放new 对象和数组 2。可以被所有线程共享&#xff0c;不会被别的对象引用。 三、图解 视频教程点击跳转

堆栈的定义和区别

在日常工作中&#xff0c;我们时常会说到堆栈。虽然堆栈总是一起说起&#xff0c;但是实际上这是两个不同的概念。 1. 堆栈的简单理解 首先简单来说呢&#xff0c;堆和栈都在RAM中&#xff0c;一般被分配的区域也是相同的一块区域&#xff0c;只是堆从下往上存储&#xff0c;…

堆栈之间的差别

1、栈中的对象可以共享&#xff1b; 堆中的对象不可以共享。 2、栈中的数据大小和生命周期是可以确定的&#xff0c;当没有引用指向数据时&#xff0c;这个数据就会消失。 堆中的数据大小和生命周期不需要确定&#xff0c;堆中对象由垃圾回收器负责回收。 3、栈中存一些基本类型…