【C++】详解 Unique 函数 (小白一看就懂!!!)

【C++】详解 Unique 函数 (小白一看就懂!!!)本文详细介绍了 C STL 中的 Unique 函数 包括其头文件 用法 去除数组或容器中重复元素并保持顺序 注意事项以及一个常考面试题示例

大家好,欢迎来到IT知识分享网。

目录

一、前言

二、去重函数 Unique() 

 ✨头文件

 ✨用法与作用

 ✨注意点

 三、常考面试题

四、共勉


一、前言

        经常刷算法题的朋友,肯定会经常看到题目中提到 去重 这样的字眼,或者需要我们通过 去重 来解题,由于之前对 去重 了解的不太清楚,导致做题的时候总会卡住,所以收集了一些资料来详解Unique

二、去重函数 Unique() 

【C++】详解 Unique 函数 (小白一看就懂!!!)

 ✨头文件

unique函数 是STL 中比较实用的函数之一
包含该函数的函数头文件为 

#include <algorithm>

 ✨用法与作用

  1. 函数作用:“去除”容器或数组中相邻元素之间重复出现的元素(所以一般使用前需要排序)。
  2. 函数参数:第一个参数是集合的起始地址,第二个参数是集合的最后一个元素的下一个元素的地址(其实还有第三个参数,比较函数,但是几乎不用,就不说了,其实和sort函数很像)。
int a[5]={1,4,2,7,2}; sort(a,a+5); unique(a,a+5);

去重后不相同元素的个数:就是函数返回值减去集合的初始位置。 

int len=unique(a,a+5)-a;//去重后不相同元素的个数

 ✨注意点

  • a 这里的删除不是真的delete,而是将重复的元素放到容器末尾
  • c 一定要先对数组进行排序才可以使用unique函数
  • b unique函数的返回值是去重之后的尾地址
int main() { int myints[] = { 10,20,20,20,30,30,20,20,10 }; vector<int> myvector(myints, myints + 9); cout << "去重前" << endl; for (int i = 0; i < 9; i++) { cout << myvector[i] << " "; } cout << endl; sort(myvector.begin(), myvector.end()); vector<int>::iterator it; it = unique(myvector.begin(), myvector.end()); // 10 20 30 20 10 ? ? ? myvector.resize(distance(myvector.begin(), it)); // 10 20 30 20 10 cout << "去重后" << endl; for (it = myvector.begin(); it != myvector.end(); it++) { cout << *it << " "; } cout << endl; return 0; } 

【C++】详解 Unique 函数 (小白一看就懂!!!)

 三、常考面试题

题目:存在重复元素
链接:217. 存在重复元素

【C++】详解 Unique 函数 (小白一看就懂!!!)

class Solution { public: bool containsDuplicate(vector<int>& nums) { sort(nums.begin(),nums.end()); int len = nums.size(); int m = unique(nums.begin(),nums.end()) - nums.begin(); if(m!=len) { return true; } else { return false; } } };

四、共勉

 以下就是我对 Unique 函数 的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对 C++ 的更新,请持续关注我哦!!! 

【C++】详解 Unique 函数 (小白一看就懂!!!) 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/120620.html

(0)
上一篇 2025-10-28 16:00
下一篇 2025-10-28 16:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信