新闻中心

C++如何使用std::sort算法_C++对vector等容器进行快速排序

2025-11-25
浏览次数:
返回列表
std::sort 是C++中高效排序工具,需包含和头文件,支持默认升序、降序及自定义类型排序,通过迭代器指定范围并可传入比较函数或lambda表达式实现灵活排序。

c++如何使用std::sort算法_c++对vector等容器进行快速排序

在C++中,std::sort 是一个高效且常用的排序算法,定义在 algorithm 头文件中。它能对 vector 等支持随机访问迭代器的容器进行快速排序(实际实现通常是 introsort,即快速排序、堆排序和插入排序的结合),平均时间复杂度为 O(n log n)。

包含必要的头文件

使用 std::sort 前,需要引入两个关键头文件:

  • #include :提供 sort 函数
  • #include :如果使用 vector 容器

默认升序排序

对 vector 中的基本类型(如 int、double)进行默认升序排序非常简单:

vector nums = {5, 2, 8, 1, 9};
std::sort(nums.begin(), nums.end());
// 结果:{1, 2, 5, 8, 9}

这里传入的是迭代器范围:begin()end(),表示整个容器。

自定义排序规则

若要降序排列,或对复杂类型排序,可通过第三个参数传入比较函数或 lambda 表达式。

例如,降序排序:

美图云修 美图云修

商业级AI影像处理工具

美图云修 50 查看详情 美图云修 std::sort(nums.begin(), nums.end(), [](int a, int b) {
  return a > b;
});
// 结果:{9, 8, 5, 2, 1}

也可以使用标准库提供的 std::greater

#include
std::sort(nums.begin(), nums.end(), std::greater());

对结构体或类对象排序

当 vector 存储的是自定义类型时,需明确排序依据。例如:

struct Student {
  string name;
  int score;
};

vector students = {{"Alice", 85}, {"Bob", 90}, {"Charlie", 70}};

std::sort(students.begin(), students.end(), [](const Student& a, const Student& b) {
  return a.score > b.score; // 按分数降序
});

这样就能根据指定字段进行灵活排序。

基本上就这些。只要掌握迭代器范围和比较函数的使用,std::sort 就能应对大多数排序需求,简洁又高效。

以上就是C++如何使用std::sort算法_C++对vector等容器进行快速排序的详细内容,更多请关注其它相关文章!


# 工具  # go  # 头文件  # 都是  # 的是  # 自定义  # 美图  # 升序  # 标准库  # 排列  # 排序算法  # c++  # 深圳seo外包站长  # 龙华seo推广哪家好  # 安阳新站网站推广  # 若知seo  # 宜宾网站建设  # 常州网站推广seo找圣安华  # 河西区网站建设推广方案  # 推广产品上什么网站  # 行业网站建设收费明细表  # 国航网站建设银行  # 就能  # 降序  # 如何使用  # 迭代 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: taptap防沉迷怎么解除 taptap解除健康系统限制说明【2025最新】  将JSON对象数组转置为键值对列表的实用指南  Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】  Win10如何清理注册表垃圾 Win10注册表维护与优化指南【慎用】  蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台  漫蛙2在线漫画入口 漫蛙正版漫画网页版直达  poki网页游戏推荐_poki免费游戏平台入口  邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧  深入理解与实现最大堆的Heapify过程:常见错误与修正  在Go开发中优雅管理ListenAndServe进程:GoSublime集成方案  Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑  HTML元素状态管理:根据DIV内容动态启用/禁用按钮  12306几点到几点不能订票? | 官方最新系统维护时间全解析  c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换  顺丰快递查单号物流信息 顺丰快递小程序查询入口  Win11怎么合并任务栏图标 Win11开启任务栏合并减少图标占空间【方法】  漫蛙漫画登录站点 漫蛙2正版漫画快速访问  整合Supabase认证与Django模型:跨模式迁移的解决方案  必由学在线入口 必由学网页版快速登录入口  HTML空白字符处理机制:渲染、DOM与编码实践  PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程  12306选座如何查看座位示意图_12306座位示意图解读与使用  漫蛙漫画官方主页入口 漫蛙MANWA网页直达访问链接  响应式CSS Grid布局:优化网格项在小屏幕下的堆叠与宽度适配  Mac怎么使用表情符号_Mac Emoji快捷键面板  1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】  Golang如何实现状态模式管理对象状态_Golang State模式实现技巧  sublime如何只显示或隐藏特定类型文件_sublime侧边栏文件过滤  神庙逃亡小游戏在线玩 神庙逃亡小游戏入口  快手官方唯一登录入口 谨防山寨钓鱼网站  Pygame教程:解决用户输入与游戏状态更新不同步问题  学习通在线学习平台 学习通网页版直接进入课程中心  《主播少女的秘密账号迷宫》首支宣传片  Go语言中JSON数据解码与字段访问指南  如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧  邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策  Android Studio计算器C键逻辑错误排查与修复:条件判断优化指南  Spyder启动失败:字体文件权限拒绝错误解决方案  Golang如何使用net/url解析URL_Golang URL解析与处理方法  J*aScript实现单选按钮与关联输入框的联动禁用教程  C++如何操作大型数据集_使用C++流式处理(Streaming)技术避免一次性加载大文件  css滚动动画效果怎么实现_使用Animate.css滚动触发动画类  Win10自动更新怎么关闭 Win10永久关闭系统更新的两种方法【终极版】  Lar*el DB::listen 事件中的查询执行时间单位解析  顺丰快件物流信息 官方网站查询入口  Bing引擎入口最新2025 Bing搜索免费官方登录  谷歌推RCS信息存档功能:公司可监控员工私密信息!  J*a递归快速排序中静态变量的状态管理与陷阱  Lar*el 8 多关键词数据库搜索优化实践  可靠CSGO开箱平台解析 CSGO开箱网合集 

搜索