蓝桥杯基础知识5 unique()

这篇具有很好参考价值的文章主要介绍了蓝桥杯基础知识5 unique()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

蓝桥杯基础知识5 unique()

#include <bits/stdc++.h>

int main(){
	std::vector<int> vec = {1,1,2,2,3,3,3,4,4,5};
	
	auto it = std::unique(vec.begin(), vec.end());
	vec.erase(it, vec.end());
    //vec.erase(unique(vec.begin(),vec.end()),vec.end())  //将重复的区域删除
	
	//1,	2,	3,	4,	5,	1,	2,	3,	4	
	//begin					it				end
	
	for(int num : vec)std::cout << num << " ";
    //1,    2,    3,    4,    5

	std::cout << std::endl;
		
	return 0;
}

C++ 在线工具 | 菜鸟工具 (runoob.com)

注意:

unique()只能去除相邻的重复元素,如果容器中存在非相邻的重复元素,则无法去除。

可以先对容器元素进行排序sort(),再使用unique();

sort()时间复杂度为O(nlogn),unique()时间复杂度为O(n)。

#include <bits/stdc++.h>
using namespace std;

int main(){
	int a[] = {1,1,2,2,3};
	int n = unique(a, a + 5) - a;
	
	for(int i : a)cout << i << " ";	// 1,	2,	3,	2,	3
	cout << endl;
	
	for(int i = 0; i < n; ++i)cout << a[i] << " ";	// 1,	2,	3
	cout << endl;
	
	for(int i = 0; i < 5; ++i)cout << a[i] << " ";	// 1,	2,	3,	2,	3
	cout << endl;	//去重元素
	
	int b[] = {3,1,2,2,3};
	int m = unique(b, b + 5) - b;
	
	for(int j : b)cout << j << " ";	// 3,	1,	2,	3,	3  
	cout << endl;
	
	for(int j = 0; j < m; ++j)cout << b[j] << " ";	// 3,	1,	2,	3
	//不能写成for(int j : b)cout << j << " ";否则报错
	cout << endl;
	
	sort(b, b + 5);
	int k = unique(b, b + 5) - b;
	for(int j = 0; j < k; ++j)cout << b[j] << " ";	// 1,	2,	3 
	cout << endl;
	
	return 0;
}

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

template<class ForwaedIt>
ForwardIt unique(ForwardIt first, ForwardIt last);

unique()是一个用于去除容器中相邻重复元素的函数。定义在<algorithm>头文件中。

first:指向容器中要去重的第一个元素的迭代器。

last:指向容器中要去重的最后一个元素的下一个位置的迭代器。

类reverse(),reverse是反转。

unique()将 [first, last) 范围内的相邻重复元素去除,

                并返回一个指向去重后范围的末尾后的迭代器。

                去重后的范围只保留了第一个出现的元素,

                后续重复元素都被移除。

                可用于数组、向量、链表等。

不删除所有重复的元素,而是通过将序列中存在的下一个元素替换为

与当前要替换的当前元素不重复的下一个元素来消除重复性。

所有被替换的元素都处于未指定状态。

去重后不会更改容器的大小,仅返回一个指向容器新端的指针,

并根据此指针来调整容器的大小或删除容器的大小。

reference:

C++ std::unique用法及代码示例 - 纯净天空 (vimsky.com)

std::unique - C++中文 - API参考文档 (apiref.com)

c++ unique函数详解-CSDN博客

unique函数用法-CSDN博客

【C++】vector中erase用法_c++ vector erase-CSDN博客文章来源地址https://www.toymoban.com/news/detail-809076.html

到了这里,关于蓝桥杯基础知识5 unique()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity | Shader基础知识(第九集:shader常用单词基础知识速成)

    目录 一、顶点(Vertex)和法线(Normal) 二、UV信息 三、 基础数据种类 1 基础数据种类 2 基础数据数组 3 基础数据数组的赋值 4 对数据数组的调用 四、 基础矩阵 1 基础矩阵种类  2 对矩阵数组的调用 2.1对一个数据的调用  2.2对多个数据的调用  2.3对数据的赋值 五、基础纹理种

    2024年02月01日
    浏览(69)
  • Opengl入门基础-基础知识

    通过之前的教程,我们已经拥有了开发环境,但是在真正开发程序之前,我们首先了解下Opengl的基本概念。 Opengl是什么? 通常网上会说Opengl是一种规范,一种接口,但是这种说法有点抽象,我们不妨先看看下面这个简单的gl流程 代码中可能有人对GLFW_OPENGL_PROFILE这类参数感到

    2024年02月11日
    浏览(45)
  • Unity中的热更新的基础知识,Xlua与ILRuntime基础知识

    热更新是指在不需要重新编译打包游戏的情况下,在线更新游戏中的一些非核心代码和资源,比如活动运营和打补丁。热更新分为资源热更新和代码热更新两种,代码热更新实际上也是把代码当成资源的一种热更新,但通常所说的热更新一般是指代码热更新。资源热更新主要

    2023年04月09日
    浏览(86)
  • YOLOv5基础知识入门(2)— YOLOv5核心基础知识讲解

    前言: Hello大家好,我是小哥谈。 YOLOV4出现之后不久,YOLOv5横空出世。YOLOv5在YOLOv4算法的基础上做了进一步的改进,使检测性能得到更进一步的提升。YOLOv5算法作为目前工业界使用的最普遍的检测算法,存在着很多可以学习的地方。本文将对YOLOv5检测算法的核心基础知识进行

    2024年02月14日
    浏览(50)
  • 电路分析基础笔记(一)基础知识

    基本概念、定律、定理、基本分析方法 目录 前言 一、电路分析概述 二、电路与电路模型 三、电路元件  四、基尔霍夫定律 五、两类约束和电路方程 前言      电路分析基础要求全面掌握电路分析基本概念、基本定理和定律,具有灵活运用电路分析理论和方法分析问题和解

    2024年02月05日
    浏览(76)
  • Windows安全基础:认证基础知识

    目录 Windows凭据 Windows访问控制模型 访问令牌: 安全标识符(SID): 安全描述符: 令牌安全防御 1、禁止域管理员异机登录 2、开启“审核进程创建”策略 SSPI(Security Support Provider Interface ,安全支持提供程序接口):是windows操作系统中用于执行各种安全相关操作的公用API,

    2024年02月02日
    浏览(54)
  • eclipse基础操作+基础知识(一)

    🖊作者 : D. Star. 📘专栏 :JAVA 😆今日分享 : 电影版–花千骨 背景:eclipse已经安装完成。 eclipse版本:2020.06 tomcat版本:8.5 file–new–project… 查看创建好后的视图 在src下建一个包:右击src–new–package 在包下建一个 .java 文件:右击包–new–class 建完之后就可以在 .java 文件下敲

    2024年01月24日
    浏览(62)
  • Python基础知识:整理10 异常相关知识

        当在主函数中没有捕获处理异常时,会报异常错误 处理后   

    2024年01月18日
    浏览(56)
  • C++ | 语句的基础知识(夯实基础)

    本篇文章主要介绍数据结构中 C++ 的语句内容,适合有 零基础 的同学,文中描述和代码示例很详细,干货满满,感兴趣的小伙伴快来一起学习吧! ☀️大家好!我是新人博主朦胧的雨梦,希望大家多多关照和支持😝😝😝 🌖大家一起努力,共同成长,相信我们都会遇到更好

    2024年02月05日
    浏览(51)
  • MySQL基础(三十二)事务基础知识

    1.1 存储引擎支持情况 SHOW ENGINES 命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。 能看出在 MySQL 中,只有InnoDB 是支持事务的。 1.2 基本概念 事务 :一组逻辑操作单元,使数据从一种状态变换到另一种状态。 事务处理的原则 :保证所有事务都

    2024年02月05日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包