当前位置: 首页 > news >正文

蓝桥杯基础知识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				endfor(int num : vec)std::cout << num << " ";//1,    2,    3,    4,    5std::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,	3cout << endl;for(int i = 0; i < n; ++i)cout << a[i] << " ";	// 1,	2,	3cout << endl;for(int i = 0; i < 5; ++i)cout << a[i] << " ";	// 1,	2,	3,	2,	3cout << 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博客

相关文章:

蓝桥杯基础知识5 unique()

蓝桥杯基础知识5 unique&#xff08;&#xff09; #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(…...

设计一个抽奖系统

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术&#x1f525;如果感觉博主的文章还不错的…...

IntelliJ IDEA使用学习

一、安装教程 网上自行下载&#xff0c;CSDN不然过审二、使用教程 2.1 快捷键操作与设置 设置 Setting——>按键映射——>选择顺手的系统快捷键 编写代码 CtrlShift Enter&#xff0c;语句完成。 “&#xff01;”&#xff0c;否定完成&#xff0c;输入表达式时按 …...

sqlilabs第五十三五十四关

Less-53(GET - GET - Error based - ORDER BY CLAUSE-String- Stacked injection) 手工注入 单引号闭合&#xff0c;和上一关一样堆叠注入解决 自动注入 和上一关一样 Less-54(GET - challenge - Union- 10 queries allowed -Variation 1) 手工注入 这一关开始后面的可以看…...

❤ Uniapp使用三( 打包和发布上线)

❤ Uniapp使用三( 打包和发布上线) 一、介绍 什么是 uniapp&#xff1f; uniapp 是一种基于 Vue.js 的多平台开发框架&#xff0c;它可以同时用于开发安卓、iOS、H5 等多个平台。因此&#xff0c;只需要写一次代码就可以在多个平台上运行&#xff0c;提高了开发效率。 打包…...

【JavaEEj进阶】 Spring实现留言板

文章目录 &#x1f38d;预期结果&#x1f340;前端代码&#x1f384;约定前后端交互接⼝&#x1f6a9;需求分析&#x1f6a9;接⼝定义 &#x1f333;实现服务器端代码&#x1f6a9;lombok &#x1f332;服务器代码实现&#x1f334;运⾏测试 &#x1f38d;预期结果 可以发布并…...

react、Vue打包直接运行index.html不空白方法

react vue 在根目录下创建 vue.config.js 文件&#xff0c;写入 module.exports {publicPath: ./, }...

SpringBoot-01

Spring Boot是一个开源的Java框架&#xff0c;用于快速构建独立的、可执行的、生产级的Spring应用程序。它基于Spring框架&#xff0c;简化了Spring应用程序的配置和部署过程&#xff0c;使开发者能够更快速地创建高效、可扩展的应用。 Spring Boot具有以下特点&#xff1a; 简…...

「解析」Jetson配置 git服务

这两天感冒了在家休养&#xff0c;想着把之前买的 Jetson 开发板用起来&#xff0c;买Jetson的初衷就是用来学习Linux系统&#xff0c;顺道可以部署算法&#xff0c;以及一些其他需求&#xff0c;相比树莓派而言&#xff0c;Jetson开发相对更贵&#xff0c;但是其配备了英伟达的…...

uniapp使用安装sass

1.首先你要安装node-sass npm install node-sass --save-dev2.安装sass-loader npm install sass-loader --save-dev3.修改style标签&#xff0c;声明使用sass <style lang"scss" scoped>...

ClickHouse学习笔记(六):ClickHouse物化视图使用

文章目录 1、ClickHouse 物化视图2、物化视图 vs 普通视图3、物化视图的优缺点4、物化视图的用法4.1、基本语法4.2、准备表结构4.3、准备数据4.3、查询结果 1、ClickHouse 物化视图 ClickHouse 的物化视图是一种查询结果的持久化&#xff0c;它的存在是为了带来查询效率的提升…...

华为OD机试真题-最小矩阵宽度-2023年OD统一考试(C卷)

题目描述: 给定一个矩阵,包含N*M个整数,和一个包含K个整数的数组。 现在要求在这个矩阵中找一个宽度最小的子矩阵,要求子矩阵包含数组中所有的整数。 输入描述: 第一行输入两个正整数N,M,表示矩阵大小。 接下来N行M列表示矩阵内容。 下一行包含一个正整数K。 下一行包含…...

java stream distinct根据list某个字段去重

项目场景&#xff1a; java stream distinct根据list某个字段去重&#xff0c;普通List简单去重&#xff1a; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors;public class TestMain {public static void main(String[] args) {List&l…...

超精简虚拟机镜像

前经常有人问我要极度精简的win 7 虚拟机镜像&#xff0c;开个贴直接发吧&#xff0c;这次包括 win10 和 win7 镜像,另有一个 win 8 win7 镜像压缩包只有 300Mb&#xff0c; win 10 镜像 有 800Mb&#xff0c; win 8 有 700Mb 系统极度精简&#xff0c;可以运行 qq 微信&#…...

【JVM】常用命令

一、前言 Java虚拟机&#xff08;JVM&#xff09;是Java程序运行的基础设施&#xff0c;它负责将Java字节码转换为本地机器代码并执行。在开发过程中&#xff0c;我们经常需要使用一些命令来监控和管理JVM的性能和状态。本文将详细介绍6个常用的JVM命令&#xff1a;jps、jstat…...

第 7 章 排序算法

文章目录 7.1 排序算法的介绍7.3 算法的时间复杂度7.3.1 度量一个程序(算法)执行时间的两种方法7.3.2 时间频度7.3.3 时间复杂度7.3.4 常见的时间复杂度7.3.5 平均时间复杂度和最坏时间复杂度 7.4 算法的空间复杂度简介7.4.1 基本介绍 7.5 冒泡排序7.5.1 基本介绍7.5.2 演示冒泡…...

机器人持续学习基准LIBERO系列7——计算并可视化点云

0.前置 机器人持续学习基准LIBERO系列1——基本介绍与安装测试机器人持续学习基准LIBERO系列2——路径与基准基本信息机器人持续学习基准LIBERO系列3——相机画面可视化及单步移动更新机器人持续学习基准LIBERO系列4——robosuite最基本demo机器人持续学习基准LIBERO系列5——…...

基于 Level set 方法的医学图像分割

摘 要 医学图像分割是计算机辅助诊断系统设计中的关键技术。对于医学图像分割问题,它一般可分为两部分:(l)图像中特定目标区域(器官或组织)的识别;(2)目标区域完整性的描述与提取。相比于其他图像,医学图像的复杂性和多样性,使得传统的基于底层图像信息的分割方法很难取得好的…...

【C++入门】C++ STL中string常用函数用法总结

目录 前言 1. string使用 2. string的常见构造 3. string类对象的访问及遍历 迭代器遍历&#xff1a; 访问&#xff1a; 4. string类对象的容量操作 4.1 size和length 4.2 clear、empty和capacity 4.3 reserve和resize reserve resize 5. string类对象的修改操作 push_back o…...

Rust变量、常量声明与基本数据类型

Rust是一门系统级别的编程语言&#xff0c;注重安全性、性能和并发。在这篇博客中&#xff0c;我们将介绍Rust中的变量、常量声明以及基本数据类型&#xff0c;并通过示例说明每一种类型的用法。 变量声明 在Rust中&#xff0c;使用 let 关键字声明变量。变量默认是不可变的&…...

RingTool:心血管信号分析与深度学习在可穿戴设备中的应用

1. RingTool工具包概述&#xff1a;心血管生理信号分析的瑞士军刀作为一名长期从事医疗健康监测系统开发的工程师&#xff0c;我见证了可穿戴设备从简单的计步器到如今能够监测多种生命体征的智能化转变。在这个过程中&#xff0c;基于光电容积图(PPG)的心血管参数监测技术扮演…...

c# while循环 do while循环

while循环//while循环 //while(){}&#xff1a;当小括号条件成立 执行{}里面的东西&#xff0c;条件不成立的时候&#xff0c;循环就结束了while (true) //true 就是永远成立 一直执行{} {Console.WriteLine("死循环");break; //跳出死循环 只会执行一次 }while (tru…...

科研创作提质增效|依托 PaperXie 智能写作,高效完成期刊论文全流程创作

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/期刊论文https://www.paperxie.cn/ai/journalArticleshttps://www.paperxie.cn/ai/journalArticles 一、引言 学术研究领域中&#xff0c;期刊论文是展现科研成果、完成学业考核、学术成果发表的核心载体。…...

FlexNeRFer架构:动态精度MAC与稀疏计算优化解析

1. FlexNeRFer架构设计解析 1.1 多精度MAC单元设计原理 FlexNeRFer的核心创新在于其可动态调整精度的MAC&#xff08;乘加运算单元&#xff09;架构。传统固定精度MAC在面对NeRF这类需要混合精度计算的场景时&#xff0c;要么存在计算资源浪费&#xff08;高精度模式&#xff…...

oracle logminer

Oracle LogMiner 日志挖掘 【一、LogMiner 核心概念】LogMiner 是 Oracle 内置的日志分析工具&#xff0c;通过解析 redo log / 归档日志&#xff0c; 提取其中的 SQL 变更记录&#xff0c;用于&#xff1a;• 数据审计&#xff08;谁改了什么、什么时候改的&#xff09; • 数…...

SNK施努卡铜箔包装线:从拔轴到入库,全流程自动化怎么实现?

在锂电铜箔生产中&#xff0c;生箔机产出的铜箔卷需要经过裁切、拔轴、包装、入库等多个环节。传统方式下&#xff0c;拔轴依靠人力或简易机械&#xff0c;包装过程需要多人配合搬运、开箱、投干燥剂、合盖捆扎&#xff0c;不仅效率低&#xff0c;而且容易损伤铜箔边缘&#xf…...

Unity 2D物理关节底层原理与实战避坑指南

1. 为什么2D物理关节不是“加个组件就完事”——从一个弹球卡墙的bug说起我第一次在Unity里拖进一个HingeJoint2D&#xff0c;想做个旋转门&#xff0c;结果运行时门直接飞出屏幕&#xff0c;撞上墙后像被磁铁吸住一样死死贴着不动。当时以为是刚体质量设错了&#xff0c;调了半…...

如何完整破解Cursor Pro限制:终极免费激活方案全解析

如何完整破解Cursor Pro限制&#xff1a;终极免费激活方案全解析 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your tria…...

别再裸发ROS图像了!image_transport保姆级教程:从压缩传输到参数调优,一次搞定

别再裸发ROS图像了&#xff01;image_transport保姆级教程&#xff1a;从压缩传输到参数调优&#xff0c;一次搞定 在机器人视觉开发中&#xff0c;图像传输往往是性能瓶颈的关键所在。许多开发者习惯性地使用ros::Publisher/Subscriber直接处理图像数据&#xff0c;却不知这种…...

仿冒 Word 钓鱼攻击中可信远程工具滥用机理与企业防御研究

摘要 2026 年 5 月安全事件监测显示&#xff0c;以仿冒 Word 在线页面为诱饵、滥用合法远程管理工具实现内网渗透的新型钓鱼攻击&#xff0c;正成为企业安全防护的典型盲区。该攻击以 Outlook 钓鱼邮件为入口&#xff0c;诱导用户访问伪造的 Word Online/OneDrive 预览页面&…...