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

力扣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进行去重操作&#xff0c;您可以将向量中的元素插入到集合中&#xff0c;因为std::set会自动去除重复元素。然后&#xff0c;您可以将集合中的元素重新存回向量中。以下是一个示例代码&#xff0c;演示如何使用std::set对std::vector进行去重&#…...

Flutter笔记:使用相机

Flutter笔记 使用相机 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/134493373 【简介】本文介绍在 Fl…...

包装类型的缓存机制

Java 基本数据类型的包装类型的大部分都用到了缓存机制来提升性能。 Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128&#xff0c;127] 的相应类型的缓存数据&#xff0c;Character 创建了数值在 [0,127] 范围的缓存数据&#xff0c;Boolean 直接返回 True or Fal…...

【BUG】第一次创建vue3+vite项目启动报错Error: Cannot find module ‘worker_threads‘

问题描述 第一次创建vue3vite项目启动报错如下&#xff1a; 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代码)

一、微网系统运行优化模型 微电网优化模型介绍&#xff1a; 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、基于非支配排序的鲸鱼优化算法NSWOA 基于非支配排序的鲸鱼优化算法NSWOA简介&#xff1a; 三、基于非支配排序的鲸鱼优化算法NSWOA求解微电网多目标优化…...

网络爬虫|Selenium——find_element_by_xpath()的几种方法

Xpath (XML Path Language)&#xff0c;是W3C定义的用来在XML文档中选择节点的语言 一、从根目录/开始 有点像Linux的文件查看&#xff0c;/代表根目录&#xff0c;一级一级的查找&#xff0c;直接子节点&#xff0c;相当于css_selector中的>号 /html/body/div/p 二、根据…...

【Kingbase FlySync】命令模式:部署双轨并行,并实现切换同步

【Kingbase FlySync】命令模式:安装部署同步软件&#xff0c;实现Oracle到KES实现同步 双轨并行方案说明一.准备工作二.环境说明三.目标实操(1).准备安装环境Orcle服务器(Oracle40)1.上传所有工具包2.操作系统配置a.增加flysync 用户、设置密码b.配置环境变量c.调整limits.conf…...

echarts 多toolti同时触发图表实现

需求背景解决效果ISQQW代码地址energyChart.vue 需求背景 需要实现同x轴&#xff0c;4个图表的的多图表联动效果&#xff0c;且滑动会触发各个图表的tooltip&#xff0c;即一个图表拥有4个tooltip(目前echarts不支持&#xff0c;我这里绕过了这个问题) 解决效果 ISQQW代码地…...

2023.11.22使用flask做一个简单的图片浏览器

2023.11.22使用flask做一个简单的图片浏览器 功能&#xff1a; 实现图片浏览&#xff08;翻页&#xff09;功能 程序页面&#xff1a; 程序架构&#xff1a; 注意&#xff1a;在flask中常会使用src“{{ url_for(‘static’, filename‘images/’ image) }}”&#xff0c…...

万字解析设计模式之桥接模式、外观模式

一、桥接模式 1.1概述 桥接模式是一种结构型设计模式&#xff0c;它的作用是将抽象部分和实现部分分离开来&#xff0c;使它们能够独立地变化。这样&#xff0c;抽象部分和实现部分可以分别进行扩展&#xff0c;而不会相互影响。它是用组合关系代替继承关系来实现&#xff0c;…...

常用系统函数

$clog2 clogb2 系统函数 $clog2 应返回参数以 2 为底的对数的上限&#xff08;对数四舍五入为整数值&#xff09;。参数可以是整数或任意大小的向量值。参数应被视为无符号值&#xff0c;参数值为 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.将编译好的库拷贝到开发板上并设置相应的环境变量&#xff08;库路径啥的&#xff09; 前两步一劳永逸&#xff0c;做一次就行 3.X86上写好程序代码&…...

Nacos介绍与使用

Nacos介绍与使用 文章目录 Nacos介绍与使用一. 什么是Nacos1 Nacos功能1.1 配置中心1.2 注册中心 2.为什么要使用Nacos 二.Nacos 部署安装1. Nacos 部署方式2. Nacos 安装3. 配置数据源4. 开启控制台授权登录&#xff08;可选&#xff09; 三. Nacos配置中心的使用1. 创建配置信…...

网工内推 | 字节原厂,正式编,网络工程师,最高30K*15薪

01 字节跳动 招聘岗位&#xff1a;网络虚拟化高级研发工程师 职责描述&#xff1a; 1、负责字节跳动虚拟网络产品的研发&#xff0c;包括但不局限于网络VPC、NAT、LB负载均衡等&#xff1b; 2、负责字节跳动网络基础平台的研发&#xff0c;包括但不局限于网络控制面系统、容器…...

Git 远程仓库(Github)

目录 添加远程库 查看当前的远程库 提取远程仓库 推送到远程仓库 删除远程仓库 Git 并不像 SVN 那样有个中心服务器。 目前我们使用到的 Git 命令都是在本地执行&#xff0c;如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员…...

Mybatis Plus分页实现逻辑整理(结合芋道整合进行解析)

Mybatis Plus分页实现逻辑整理&#xff08;结合芋道整合进行解析&#xff09; 我希望如春天般的你&#xff0c;身着白色的婚纱&#xff0c;向我奔赴而来&#xff0c;我愿意用全世界最温情的目光&#xff0c;朝着你的方向望去——姗姗来迟。 1.背景介绍 https://baomidou.com/p…...

C#编程题分享(2)

输出所有整数的和 让⽤户输⼊整数&#xff0c;如果⽤户输⼊的不是0&#xff0c;就继续输⼊&#xff0c;如果输⼊的是0&#xff0c;结束整数&#xff0c;并输出所有整数的和。 Console.WriteLine("请输⼊⼀个整数&#xff1a;"); int n; int sum 0; do {n Convert…...

Dockerfile基础

前言 知识点整理 Dockerfile 简介 它是一个没有后缀名的文本文档&#xff0c;里面是组合镜像的一些命令&#xff0c;Docker build命令构建镜像时&#xff0c;通过读取Dockerfile中的指令的顺序&#xff08;自上到下&#xff09;自动生成镜像。 Dockerfile 命令 1. FROM 指…...

python+selenium实现web自动化(基础入门)

selenium 是一个自动化操控工具&#xff0c;支持对web端进行自动化操控&#xff0c;从而实现自动化测试。 相关文档&#xff1a; https://python-selenium-zh.readthedocs.io/zh-cn/latest/https://www.selenium.dev/documentation/ 安装配置 环境依赖&#xff1a; python…...

数字电源控制技术:从效率优化到智能管理

1. 数字电源控制技术的革新突破在电力电子领域工作了十五年&#xff0c;我见证了电源技术从模拟控制到数字控制的革命性转变。2007年那场PCIM China展会上&#xff0c;Ericsson展示的数字控制POL稳压器让我至今记忆犹新——它用25.412.7mm的尺寸实现了20A输出&#xff0c;这个尺…...

性价比高的芯片老化座哪家公司好?

芯片作为电子设备的核心组件&#xff0c;其质量和性能直接关系到整个产品的稳定性与可靠性。因此&#xff0c;芯片老化座的选择显得尤为重要。那么&#xff0c;在市场上琳琅满目的品牌中&#xff0c;哪家公司的芯片老化座性价比最高呢&#xff1f;本文将为您详细介绍深圳市鸿怡…...

如何高效实现跨平台3D模型转换:Blender MMD Tools专业指南

如何高效实现跨平台3D模型转换&#xff1a;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. 项目概述&#xff1a;为创业者量身定制的AI模型评测基准 如果你正在用OpenClaw、N8N或者Hermes这类自动化工具来搭建你的AI工作流&#xff0c;那你肯定和我一样&#xff0c;最近被一个消息打了个措手不及&#xff1a;从2026年4月21日起&#xff0c;Claude Code不再包含在每…...

本地AI桌面助手Joanium:项目感知与自动化工作流实战

1. 项目概述&#xff1a;一个真正运行在你电脑里的AI桌面助手 如果你和我一样&#xff0c;每天的工作流里充斥着各种重复性的任务&#xff1a;打开GitHub看issue、检查邮件、整理项目文档、或者为某个代码片段写注释。这些事说大不大&#xff0c;但累积起来&#xff0c;就是巨…...

别再死记公式了!用PyTorch的CrossEntropyLoss搞懂多分类与多标签任务的区别

从原理到实践&#xff1a;PyTorch中CrossEntropyLoss的多分类与多标签任务深度解析 当你第一次在PyTorch中遇到nn.CrossEntropyLoss时&#xff0c;是否曾被它的"多面性"所困惑&#xff1f;这个看似简单的损失函数&#xff0c;在处理单标签多分类&#xff08;如手写数…...

Lavida-O框架:统一跨模态理解与生成的技术突破

1. 项目背景与核心价值去年在CVPR上第一次看到DALLE 2的展示时&#xff0c;我就被多模态生成的质量震撼到了。但实际在企业级应用中&#xff0c;我们发现现有方案存在两个致命缺陷&#xff1a;一是理解与生成割裂导致的语义断层&#xff0c;二是跨模态转换时的信息损耗。这正是…...

Pydantic-Resolve:声明式数据组装解决N+1查询与API性能优化

1. 项目概述&#xff1a;用声明式思维解决嵌套数据组装难题如果你在开发后端API&#xff0c;尤其是需要聚合多个数据源的BFF&#xff08;Backend for Frontend&#xff09;层时&#xff0c;肯定遇到过这样的场景&#xff1a;前端需要一个包含用户详情、任务列表、评论等嵌套数据…...

Godot游戏服务器开发:Nakama插件集成与实时多人对战实现

1. 项目概述&#xff1a;当游戏服务器遇上Godot引擎如果你正在用Godot引擎开发一款需要在线功能的游戏&#xff0c;比如多人对战、排行榜、实时聊天或者玩家数据云存储&#xff0c;那你肯定绕不开一个核心问题&#xff1a;后端服务器怎么搞&#xff1f;自己从头搭建一套&#x…...

SA6400内核5.10编译TCP_BBR的具体方法整理

SA6400内核5.10编译TCP_BBR的具体方法整理&#xff1a; 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…...