当前位置: 首页 > 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

http://www.lryc.cn/news/238211.html

相关文章:

  • Flutter笔记:使用相机
  • 包装类型的缓存机制
  • 【BUG】第一次创建vue3+vite项目启动报错Error: Cannot find module ‘worker_threads‘
  • 多目标应用:基于非支配排序的鲸鱼优化算法NSWOA求解微电网多目标优化调度(MATLAB代码)
  • 网络爬虫|Selenium——find_element_by_xpath()的几种方法
  • 【Kingbase FlySync】命令模式:部署双轨并行,并实现切换同步
  • echarts 多toolti同时触发图表实现
  • 2023.11.22使用flask做一个简单的图片浏览器
  • 万字解析设计模式之桥接模式、外观模式
  • 常用系统函数
  • 键盘控制ROS车运动
  • linux上交叉编译qt库
  • Nacos介绍与使用
  • 网工内推 | 字节原厂,正式编,网络工程师,最高30K*15薪
  • Git 远程仓库(Github)
  • Mybatis Plus分页实现逻辑整理(结合芋道整合进行解析)
  • C#编程题分享(2)
  • Dockerfile基础
  • python+selenium实现web自动化(基础入门)
  • Spring Boot 自动配置
  • 力扣labuladong一刷day13天双指针8道链表题
  • 【剑指offer|图解|链表】链表的中间结点 + 链表中倒数第k个结点
  • 被环境变量虐过一遍获得的启示
  • 关于Hbase的一些问题
  • level=warning msg=“failed to retrieve runc version: signal: segmentation fault“
  • 电力工作记录仪、智能安全帽、智能布控球助力智能电网建设
  • 【CSS】各百分比透明度 opacity 对应的 16 进制颜色值(例如:#FFFFFF80)
  • 有依次对应关系的数组X、Y、Z,如何排序其中一个X数组,使得另外的数组还与排序完成后的数组相对应(C语言实现)
  • Mysql之聚合函数
  • Flutter笔记:拖拽手势