力扣C++学习笔记——C++ 给vector去重

news/2024/11/27 14:49:34/

要使用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.ppmy.cn/news/1236482.html

相关文章

王道p149 9.设树B是一棵采用链式结构存储的二叉树,编写一个把树 B中所有结点的左、右子树进行交换的函数。(c语言代码实现)

本题代码如下 void swap(tree* t) {if (*t){treenode* temp (*t)->lchild;(*t)->lchild (*t)->rchild;(*t)->rchild temp;swap(&(*t)->lchild);swap(&(*t)->rchild);} } 完整测试代码 #include<stdio.h> #include<stdlib.h> typed…

Deepmind开发音频模型Lyria 用于生成高品质音乐;创建亚马逊新产品评论摘要

&#x1f989; AI新闻 &#x1f680; Deepmind开发音频模型Lyria 用于生成高品质音乐 摘要&#xff1a;Deepmind推出名为Lyria的音频模型&#xff0c;可生成带有乐器和人声的高品质音乐。Lyria模型针对音乐生成的挑战&#xff0c;解决了音乐信息密度高、音乐序列中的连续性维…

RPC vs. HTTP:谁主沉浮在网络通信的江湖?

&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 RPC vs. HTTP&#xff1a;谁主沉浮在网络通信的江湖&#xff1f; 前言第一&#xff1a;背景介绍第二&#xff1a;性能对比第三&#xff1a;适用场景第四&#xff1a;总结 前言…

shell脚本字符串截取方法

假设有变量 varhttp://www.aaa.com/123.htm. 1. # 号截取&#xff0c;删除左边字符&#xff0c;保留右边字符。 echo ${var#*//} 其中 var 是变量名&#xff0c;# 号是运算符&#xff0c;*// 表示从左边开始删除第一个 // 号及左边的所有字符 即删除 http:// 结果是 &#xf…

vue.js中使用三元运算符设置动态样式

三元表达式设置style <p :style"{color: (a b ? #3d8cff:#BBBBBB)}">测试</p>三元表达式设置class <p :class"[ a b ? classA:classB]">测试</p>

2023年危险化学品生产单位安全生产管理人员证模拟考试题库及危险化学品生产单位安全生产管理人员理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年危险化学品生产单位安全生产管理人员证模拟考试题库及危险化学品生产单位安全生产管理人员理论考试试题是由安全生产模拟考试一点通提供&#xff0c;危险化学品生产单位安全生产管理人员证模拟考试题库是根据危…

睡前随笔记录

一个人从出生到长大&#xff0c;就像一部手机从新用到旧。手机里面积累了太多的缓存&#xff0c;积累了太多的照片&#xff0c;各种app的数据&#xff0c;安装了各式各样的程序。 所以大概这就是年纪越大&#xff0c;记性越差的原因吗&#xff1f;就像一个屋子&#xff0c;堆满…

【深度学习】Python快捷调用InsightFace人脸检测,纯ONNX推理

pypi资料&#xff1a; https://pypi.org/project/insightface/ 模型选择&#xff1a; https://github.com/deepinsight/insightface/tree/master/python-package#model-zoo onnxruntime的GPU对应CUDA &#xff1a; https://onnxruntime.ai/docs/reference/compatibility …