C++ vector去重方法_C++ unique函数去除重复元素


先排序使相同元素相邻,再用std::unique合并连续重复项并配合erase删除多余元素。示例代码展示完整去重流程:包含头文件后定义vector,调用sort排序,再通过unique和erase移除重复值,最终输出有序无重结果。注意std::unique仅对连续重复元素有效,故排序必不可少;可自定义比较函数实现特殊去重逻辑,但需保证相应排序规则;时间复杂度O(n log n),适用于常规场景,若需保持原序应选用set或unordered_set辅助处理。该方法高效常用,核心是先排序再去重。

c++ vector去重方法_c++ unique函数去除重复元素

在C++中,使用vector存储数据时,经常会遇到需要去除重复元素的情况。结合标准库中的std::unique函数和排序操作,可以高效实现去重。下面介绍具体用法和注意事项。

使用 std::unique 去除重复元素的基本步骤

std::unique并不会真正删除元素,而是将相邻的重复元素“移到”容器末尾,并返回一个指向新逻辑末尾的迭代器。因此,必须配合erase方法才能真正删除这些元素。

基本流程如下:

  • 先对vector进行排序,使相同元素相邻
  • 使用std::unique合并连续重复项
  • 调用erase删除多余元素
注意:如果不排序,std::unique只会去除连续重复的元素,无法处理所有重复值。

代码示例:完整去重操作

以下是一个完整的例子:

#include <vector>
#include <algorithm>
#include <iostream>

int main() {
    std::vector<int> vec = {5, 2, 8, 2, 1, 5, 3};

    // 步骤1:排序
    std::sort(vec.begin(), vec.end());

    // 步骤2:去重并删除
    vec.erase(std::unique(vec.begin(), vec.end()), vec.end());

    // 输出结果
    for (int n : vec) {
        std::cout << n << " ";
    }
    // 输出:1 2 3 5 8
    return 0;
}

自定义去重条件(高级用法)

std::unique支持传入自定义比较函数,用于定义“相等”的含义。例如,若想认为绝对值相同的数为重复项:

Haiper Haiper

一个感知模型驱动的AI视频生成和重绘工具,提供文字转视频、图片动画化、视频重绘等功能

Haiper 227 查看详情 Haiper
vec.erase(std::unique(vec.begin(), vec.end(),
    [](int a, int b) { return abs(a) == abs(b); }
), vec.end());

但这种情况下仍需确保数据按自定义规则有序,否则结果可能不完整。

性能与适用场景

该方法时间复杂度主要由排序决定,为 O(n log n),适合大多数常规去重需求。如果数据量小或已接近有序,效率较高。若要求保持原始顺序,此方法会破坏原有顺序,需考虑其他方式如使用std::setstd::unordered_set辅助记录已出现元素。

基本上就这些,掌握sort + unique + erase组合是C++中处理vector去重的常用技巧。不复杂但容易忽略排序前提。

以上就是C++ vector去重方法_C++ unique函数去除重复元素的详细内容,更多请关注其它相关文章!


# 复用  # 威海网站营销推广  # 网站建设皆选祥云平台  # 临夏网络seo优化  # 长治做网站整站优化排名  # 丽水网站建设定制  # 郫县网站推广优化  # 房山房产抖音SEO  # 关键词seo排名推荐h火11星  # 社会化营销推广的目的  # 廊坊网站建设开发与制作  # 较高  # 适用于  # 是一个  # go  # 多路  # 管理机制  # 如何实现  # 何为  # 都是  # 自定义  # red  # 标准库  # stream  # ios  # c++  # ai 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: mysql镜像配置如何设置用户权限组_mysql镜像配置用户组与权限分级管理方法  构建可配置的J*aScript加权点击计数器与共享总计功能  如何在Golang中处理表单文件上传_Golang 表单文件上传示例  微博网页版入口链接 微博网页版在线互动平台  微信注销后银行卡解绑了吗_微信注销后银行卡解绑状态  高德地图怎么查看未来行程规划_高德地图未来行程规划查看方法  《律学法考》查看学习数据方法  《暗黑破坏神4》国服回归送狂欢礼包 价值6916元  iPhone 13 Pro Max如何设置桌面小组件_iPhone 13 Pro Max小组件添加指南  《土豆雅思》修改密码方法  《小黑盒》删除历史浏览方法  顺丰速运官网查询入口 顺丰物流查询官网入口链接  Python类装饰器动态修改方法时的类型提示:Mypy插件实现精确静态分析  铁拳8在线玩 铁拳8在线秒玩入口  excel怎么计算平均值 excel平均函数*ERAGE使用教学  在Django中动态检查模型关联:一种灵活的解决方案  《下一站江湖2》独孤剑诀习得方法  CSS如何使用outline-offset与颜色组合突出元素边框  word页码灰色不能用如何解决  抄漫画官网防走失地址_抄漫画最新漫画完整版阅读入口  《飞猪旅行》购买汽车票方法  《三国:谋定天下》平民全阶段通用阵容  学习通网页版个人登录_学习通网页版个人账户登录入口  Highcharts雷达图轴线交点数值标注指南  解决Windows上Composer PATH变量冲突导致的命令无法识别问题  怎么恢复删除的电脑文件_数据恢复软件使用教程  mysql通配符能用于日志查询吗_mysql通配符在系统日志查询中的实际使用方法  mysql数据库索引类型有哪些_mysql索引类型解析  iPhone17Pro如何连接蓝牙耳机_iPhone17Pro蓝牙设备配对与连接方法介绍  菜鸟裹裹怎样获得取件码_菜鸟裹裹获得取件码步骤  Win11便笺在哪打开 Win11桌面便笺(Sticky Notes)使用方法【详解】  优化 WooCommerce 产品价格显示与自定义短代码集成  咸鱼怎么设置仅粉丝可见的动态_咸鱼动态粉丝可见设置方法  如何使用CSS Grid实现“大方块左侧,小方块右侧垂直堆叠”的水平布局  123网页端官方登录页 123邮箱网页版即时通讯服务  智慧职教mooc平台登录网址 智慧职教mooc官网直达  我的世界游戏平台入口 我的世界官方官网直达链接  《狐友》联系客服方法  Mac怎么关闭按键声音_Mac键盘打字音效设置  哔哩哔哩黑名单怎么查看  realme 10 Pro息屏方案_realme 10 Pro省电策略  如何在CSS中设置背景图像:一个全面指南  视频转蓝光m2ts格式  百度地图离线地图无法加载如何解决 百度地图离线地图加载优化方法  Magento 2 产品保存事件中安全更新属性的最佳实践  《爱笔思画x》涂色教程  铁路12306买票怎么选双人铺 铁路12306卧铺分配规则说明  《i莞家》修改昵称方法  苹果自助维修计划支持哪些设备机型  windows10怎么设置电源按钮_windows10按下电源键功能修改 

 2025-12-03

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.