C C++最全【C++】详解 Unique 函数 (小白一看就懂(1),2024年最新10天拿到字节跳动C C++岗位offer

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

三、常考面试题

四、共勉


一、前言

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

二、去重函数 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;


![img](https://i-blog.csdnimg.cn/blog_migrate/ffc00c8e73ef9053c18e8e192c9c3845.png)
![img](https://img-blog.csdnimg.cn/img_convert/52e9f717392821ba1a86a51151a35022.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**


**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值