C++如何对vector进行排序?(std::sort函数示例)

发布时间 - 2026-01-07 00:00:00    点击率:
std::sort是最常用vector排序方法,默认升序,传入begin()和end()迭代器;支持降序(greater或lambda)、自定义类型(重载

std::sortstd::vector 排序最常用也最直接,只需传入起始和结束迭代器,它默认按升序排列元素。

基础升序排序

对存储基本类型(如 intdouble)的 vector,直接调用 std::sort(vec.begin(), vec.end()) 即可:

  • 头文件需包含
  • vec.begin() 指向首元素,vec.end() 指向末尾之后的位置(左闭右开区间)
  • 原地排序,不额外分配空间,时间复杂度为 O(n log n)

降序排序

传入 std::greater() 作为第三个参数即可实现降序:

  • std::sort(vec.begin(), vec.end(), std::greater());
  • 也可用 lambda 表达式:[](int a, int b) { return a > b; }
  • 注意:lambda 需捕获为空,且返回 true 表示“a 应排在 b 前面”

对自定义类型排序

vector 存的是结构体或类,需明确比较逻辑:

立即学习“C++免费学习笔记(深入)”;

  • 重载 operator:让类型支持默认升序
  • 或提供外部比较函数/lambda,例如按成员 name 字典序升序:
    std::sort(v.begin(), v.end(), [](const Person& a, const Person& b) { return a.name
  • 确保比较函数满足严格弱序(irreflexive、transitive、antisymmetric)

排序部分元素

只对子区间排序也很方便,比如只排后一半:

  • auto mid = vec.begin() + vec.size() / 2;
  • std::sort(mid, vec.end());
  • 注意迭代器有效性:确保 mid 不越界(vec.size() > 0


# go  # c++  # 排列  # sort  # const  # auto  # 结构体  # int  # double  # Lambda  # operator  # 升序  # 自定义  # 迭代  # 降序  # 的是  # 只需  # 也很  # 第三个  # 排在  # 只对 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 黑客如何利用漏洞与弱口令入侵网站服务器?  简历没回改:利用AI润色让你的文字更专业  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  网站建设整体流程解析,建站其实很容易!  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  Laravel如何使用模型观察者?(Observer代码示例)  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  高防服务器租用如何选择配置与防御等级?  高性价比服务器租赁——企业级配置与24小时运维服务  使用spring连接及操作mongodb3.0实例  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  原生JS获取元素集合的子元素宽度实例  Laravel怎么使用Intervention Image库处理图片上传和缩放  如何用IIS7快速搭建并优化网站站点?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  Android滚轮选择时间控件使用详解  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  浅谈Javascript中的Label语句  中山网站推广排名,中山信息港登录入口?  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  Laravel集合Collection怎么用_Laravel集合常用函数详解  QQ浏览器网页版登录入口 个人中心在线进入  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  免费视频制作网站,更新又快又好的免费电影网站?  如何基于云服务器快速搭建个人网站?  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  php打包exe后无法访问网络共享_共享权限设置方法【教程】  IOS倒计时设置UIButton标题title的抖动问题  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  如何确认建站备案号应放置的具体位置?  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Internet Explorer官网直接进入 IE浏览器在线体验版网址  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Java遍历集合的三种方式  Android okhttputils现在进度显示实例代码  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  如何快速搭建安全的FTP站点?  音乐网站服务器如何优化API响应速度?  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  JS弹性运动实现方法分析  EditPlus中的正则表达式实战(5)  python中快速进行多个字符替换的方法小结  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?