力扣C++学习笔记——C++ 给vector去重
要使用std::set对std::vector进行去重操作,您可以将向量中的元素插入到集合中,因为std::set会自动去除重复元素。然后,您可以将集合中的元素重新存回向量中。以下是一个示例代码,演示如何使用std::set对std::vector进行去重:
set ——排序去重
#include <iostream>
#include <vector>
#include <set>int main()
{std::vector<int> numbers = {1, 2, 3, 2, 4, 3, 5, 6, 4};std::cout << "去重前的 numbers: ";for (auto i : numbers){std::cout << i << " ";}std::cout << std::endl;// 定义一个set ,将numbers数据赋值给set,set会自动去重,并排序,如果不想排序,就使用 unordered_setstd::set<int> uniquenumbers(numbers.begin(), numbers.end());std::cout << "uniquenumbers: ";for (auto i : uniquenumbers){std::cout << i << " ";}std::cout << std::endl;numbers.assign(uniquenumbers.begin(), uniquenumbers.end());std::cout << "去重后的 numbers: ";for (auto i : numbers){std::cout << i << " ";}std::cout << std::endl;return 0;
}
运行此代码将输出:

即去除重复元素后的向量。
在这个示例中,我们首先将向量中的元素插入到std::set中,由于std::set会自动去除重复元素,所以集合中的元素就是去重后的结果。然后,我们使用assign函数将集合中的元素重新存回向量中,覆盖原有的元素。最后,我们遍历输出去重后的向量。
unordered_set ——不排序去重
请注意,使用std::set进行去重会导致元素的顺序发生改变,因为std::set会自动对元素进行排序。如果您需要保留原始向量中的元素顺序,可以考虑使用std::unordered_set代替std::set,但是请注意std::unordered_set不会对元素进行排序。
#include <iostream>
#include <vector>
#include <set>
#include <unordered_set>
int main() {std::vector<int> numbers = { 1, 2, 3, 2, 4, 3, 5, 6, 4 };// 使用std::set对向量进行去重std::unordered_set<int> uniqueNumbers(numbers.begin(), numbers.end());// 将去重后的元素存回向量numbers.assign(uniqueNumbers.begin(), uniqueNumbers.end());// 输出去重后的向量for (const auto& num : numbers) {std::cout << num << " ";}std::cout << std::endl;return 0;
}
但是会发现 ,unordered_set 赋值后,每次插入值都是插入到了开头。

参考:https://blog.csdn.net/qq_32642107/article/details/109152106
相关文章:
力扣C++学习笔记——C++ 给vector去重
要使用std::set对std::vector进行去重操作,您可以将向量中的元素插入到集合中,因为std::set会自动去除重复元素。然后,您可以将集合中的元素重新存回向量中。以下是一个示例代码,演示如何使用std::set对std::vector进行去重&#…...
Flutter笔记:使用相机
Flutter笔记 使用相机 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/134493373 【简介】本文介绍在 Fl…...
包装类型的缓存机制
Java 基本数据类型的包装类型的大部分都用到了缓存机制来提升性能。 Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,Character 创建了数值在 [0,127] 范围的缓存数据,Boolean 直接返回 True or Fal…...
【BUG】第一次创建vue3+vite项目启动报错Error: Cannot find module ‘worker_threads‘
问题描述 第一次创建vue3vite项目启动报错如下: Error: Cannot find module worker_threadsat Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)at Function.Module._load (internal/modules/cjs/loader.js:562:25)at Module.require (…...
多目标应用:基于非支配排序的鲸鱼优化算法NSWOA求解微电网多目标优化调度(MATLAB代码)
一、微网系统运行优化模型 微电网优化模型介绍: 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、基于非支配排序的鲸鱼优化算法NSWOA 基于非支配排序的鲸鱼优化算法NSWOA简介: 三、基于非支配排序的鲸鱼优化算法NSWOA求解微电网多目标优化…...
网络爬虫|Selenium——find_element_by_xpath()的几种方法
Xpath (XML Path Language),是W3C定义的用来在XML文档中选择节点的语言 一、从根目录/开始 有点像Linux的文件查看,/代表根目录,一级一级的查找,直接子节点,相当于css_selector中的>号 /html/body/div/p 二、根据…...
【Kingbase FlySync】命令模式:部署双轨并行,并实现切换同步
【Kingbase FlySync】命令模式:安装部署同步软件,实现Oracle到KES实现同步 双轨并行方案说明一.准备工作二.环境说明三.目标实操(1).准备安装环境Orcle服务器(Oracle40)1.上传所有工具包2.操作系统配置a.增加flysync 用户、设置密码b.配置环境变量c.调整limits.conf…...
echarts 多toolti同时触发图表实现
需求背景解决效果ISQQW代码地址energyChart.vue 需求背景 需要实现同x轴,4个图表的的多图表联动效果,且滑动会触发各个图表的tooltip,即一个图表拥有4个tooltip(目前echarts不支持,我这里绕过了这个问题) 解决效果 ISQQW代码地…...
2023.11.22使用flask做一个简单的图片浏览器
2023.11.22使用flask做一个简单的图片浏览器 功能: 实现图片浏览(翻页)功能 程序页面: 程序架构: 注意:在flask中常会使用src“{{ url_for(‘static’, filename‘images/’ image) }}”,…...
万字解析设计模式之桥接模式、外观模式
一、桥接模式 1.1概述 桥接模式是一种结构型设计模式,它的作用是将抽象部分和实现部分分离开来,使它们能够独立地变化。这样,抽象部分和实现部分可以分别进行扩展,而不会相互影响。它是用组合关系代替继承关系来实现,…...
常用系统函数
$clog2 clogb2 系统函数 $clog2 应返回参数以 2 为底的对数的上限(对数四舍五入为整数值)。参数可以是整数或任意大小的向量值。参数应被视为无符号值,参数值为 0 将产生结果 0。 该系统函数可用于计算对给定大小的存储器进行寻址所…...
键盘控制ROS车运动
键盘控制ROS车运动 上位机 使用pyseria库与stm32单片机进行通信控制 #!/usr/bin/env python # -*- coding: utf-8 -*import sys, select, termios, tty import serialmsg """ ---------------------------w a x ds w : x a : y s : -x …...
linux上交叉编译qt库
linux上交叉编译qt库 Qt程序从X86平台Linux移植到ARM平台Linux需要做什么 1.在ubuntu上使用qt的源码交叉编译出Qt库 2.将编译好的库拷贝到开发板上并设置相应的环境变量(库路径啥的) 前两步一劳永逸,做一次就行 3.X86上写好程序代码&…...
Nacos介绍与使用
Nacos介绍与使用 文章目录 Nacos介绍与使用一. 什么是Nacos1 Nacos功能1.1 配置中心1.2 注册中心 2.为什么要使用Nacos 二.Nacos 部署安装1. Nacos 部署方式2. Nacos 安装3. 配置数据源4. 开启控制台授权登录(可选) 三. Nacos配置中心的使用1. 创建配置信…...
网工内推 | 字节原厂,正式编,网络工程师,最高30K*15薪
01 字节跳动 招聘岗位:网络虚拟化高级研发工程师 职责描述: 1、负责字节跳动虚拟网络产品的研发,包括但不局限于网络VPC、NAT、LB负载均衡等; 2、负责字节跳动网络基础平台的研发,包括但不局限于网络控制面系统、容器…...
Git 远程仓库(Github)
目录 添加远程库 查看当前的远程库 提取远程仓库 推送到远程仓库 删除远程仓库 Git 并不像 SVN 那样有个中心服务器。 目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员…...
Mybatis Plus分页实现逻辑整理(结合芋道整合进行解析)
Mybatis Plus分页实现逻辑整理(结合芋道整合进行解析) 我希望如春天般的你,身着白色的婚纱,向我奔赴而来,我愿意用全世界最温情的目光,朝着你的方向望去——姗姗来迟。 1.背景介绍 https://baomidou.com/p…...
C#编程题分享(2)
输出所有整数的和 让⽤户输⼊整数,如果⽤户输⼊的不是0,就继续输⼊,如果输⼊的是0,结束整数,并输出所有整数的和。 Console.WriteLine("请输⼊⼀个整数:"); int n; int sum 0; do {n Convert…...
Dockerfile基础
前言 知识点整理 Dockerfile 简介 它是一个没有后缀名的文本文档,里面是组合镜像的一些命令,Docker build命令构建镜像时,通过读取Dockerfile中的指令的顺序(自上到下)自动生成镜像。 Dockerfile 命令 1. FROM 指…...
python+selenium实现web自动化(基础入门)
selenium 是一个自动化操控工具,支持对web端进行自动化操控,从而实现自动化测试。 相关文档: https://python-selenium-zh.readthedocs.io/zh-cn/latest/https://www.selenium.dev/documentation/ 安装配置 环境依赖: python…...
数字电源控制技术:从效率优化到智能管理
1. 数字电源控制技术的革新突破在电力电子领域工作了十五年,我见证了电源技术从模拟控制到数字控制的革命性转变。2007年那场PCIM China展会上,Ericsson展示的数字控制POL稳压器让我至今记忆犹新——它用25.412.7mm的尺寸实现了20A输出,这个尺…...
性价比高的芯片老化座哪家公司好?
芯片作为电子设备的核心组件,其质量和性能直接关系到整个产品的稳定性与可靠性。因此,芯片老化座的选择显得尤为重要。那么,在市场上琳琅满目的品牌中,哪家公司的芯片老化座性价比最高呢?本文将为您详细介绍深圳市鸿怡…...
如何高效实现跨平台3D模型转换:Blender MMD Tools专业指南
如何高效实现跨平台3D模型转换:Blender MMD Tools专业指南 【免费下载链接】blender_mmd_tools MMD Tools is a blender addon for importing/exporting Models and Motions of MikuMikuDance. 项目地址: https://gitcode.com/gh_mirrors/bl/blender_mmd_tools …...
AI模型实战评测:为创业者定制的开源基准与选型指南
1. 项目概述:为创业者量身定制的AI模型评测基准 如果你正在用OpenClaw、N8N或者Hermes这类自动化工具来搭建你的AI工作流,那你肯定和我一样,最近被一个消息打了个措手不及:从2026年4月21日起,Claude Code不再包含在每…...
本地AI桌面助手Joanium:项目感知与自动化工作流实战
1. 项目概述:一个真正运行在你电脑里的AI桌面助手 如果你和我一样,每天的工作流里充斥着各种重复性的任务:打开GitHub看issue、检查邮件、整理项目文档、或者为某个代码片段写注释。这些事说大不大,但累积起来,就是巨…...
别再死记公式了!用PyTorch的CrossEntropyLoss搞懂多分类与多标签任务的区别
从原理到实践:PyTorch中CrossEntropyLoss的多分类与多标签任务深度解析 当你第一次在PyTorch中遇到nn.CrossEntropyLoss时,是否曾被它的"多面性"所困惑?这个看似简单的损失函数,在处理单标签多分类(如手写数…...
Lavida-O框架:统一跨模态理解与生成的技术突破
1. 项目背景与核心价值去年在CVPR上第一次看到DALLE 2的展示时,我就被多模态生成的质量震撼到了。但实际在企业级应用中,我们发现现有方案存在两个致命缺陷:一是理解与生成割裂导致的语义断层,二是跨模态转换时的信息损耗。这正是…...
Pydantic-Resolve:声明式数据组装解决N+1查询与API性能优化
1. 项目概述:用声明式思维解决嵌套数据组装难题如果你在开发后端API,尤其是需要聚合多个数据源的BFF(Backend for Frontend)层时,肯定遇到过这样的场景:前端需要一个包含用户详情、任务列表、评论等嵌套数据…...
Godot游戏服务器开发:Nakama插件集成与实时多人对战实现
1. 项目概述:当游戏服务器遇上Godot引擎如果你正在用Godot引擎开发一款需要在线功能的游戏,比如多人对战、排行榜、实时聊天或者玩家数据云存储,那你肯定绕不开一个核心问题:后端服务器怎么搞?自己从头搭建一套&#x…...
SA6400内核5.10编译TCP_BBR的具体方法整理
SA6400内核5.10编译TCP_BBR的具体方法整理: 1. 下载ToolChain和内核源码 # 下载ToolChain wget https://cndl.synology.cn/download/ToolChain/toolchain/7.2-63134/AMD%20x86%20Linux%20Linux%205.10.55%20%28epyc7002%29/epyc7002-gcc1220_glibc236_x86_64-GPL.tx…...
