c++ vector如何排序 c++ sort函数对vector排序【技巧】

发布时间 - 2025-12-31 00:00:00    点击率:
std::sort 对 std::vector 排序最直接高效,基础升序只需传入 begin() 和 end() 迭代器,默认按元素小于关系排序。

std::sortstd::vector 排序最直接、高效,关键在于传对迭代器和可选的比较规则。

基础升序排序(默认)

只需传入 begin()end() 迭代器,sort 默认按 比较,适用于内置类型或已重载 operator 的自定义类:

#include 
#include 
std::vector v = {3, 1, 4, 1, 5};
std::sort(v.begin(), v.end()); // → {1, 1, 3, 4, 5}

降序排序(用 greater

头文件 提供现成的函数对象:

  • std::sort(v.begin(), v.end(), std::greater()) —— 适用于数值类型
  • 等价写法:std::sort(v.begin(), v.end(), [](int a, int b) { return a > b; })

自定义类型排序(lambda 或函数指针)

比如按结构体某个成员排序,推荐用 lambda 表达式,简洁且作用域清晰:

struct Person {
    std::string name;
    int age;
};
std::vector people = {{"Alice", 30}, {"Bob", 25}};
std::sort(people.begin(), people.end(), 
          [](const Person& a, const Person& b) { return a.age < b.age; });
// 按年龄升序
  • 捕获列表为空 [],不需外部变量时最安全
  • 参数加 const& 避免拷贝,提升性能
  • 返回 true 表示 a 应排在 b 前面(即 a 在 b 左侧)

注意:sort 要求随机访问迭代器,vector 完全满足

std::vector 的迭代器支持 +-[] 等操作,因此能用 std::sort(内部基于快速排序/堆排序/插入排序混合实现)。而 std::list 不行,得用其成员函数 sort()

不复杂但容易忽略


# c++  # sort  # 升序  # 迭代  # 只需  # 适用于  # 自定义  # 可选  # 不需  # 排在  # 关键在于  # 为空 


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


相关推荐: Laravel如何创建自定义Facades?(详细步骤)  如何用y主机助手快速搭建网站?  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  如何批量查询域名的建站时间记录?  iOS发送验证码倒计时应用  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  如何用PHP工具快速搭建高效网站?  5种Android数据存储方式汇总  googleplay官方入口在哪里_Google Play官方商店快速入口指南  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  如何在万网主机上快速搭建网站?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  Swift中循环语句中的转移语句 break 和 continue  专业商城网站制作公司有哪些,pi商城官网是哪个?  怎么用AI帮你设计一套个性化的手机App图标?  如何在Windows虚拟主机上快速搭建网站?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  JS去除重复并统计数量的实现方法  如何用PHP快速搭建CMS系统?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  利用JavaScript实现拖拽改变元素大小  iOS中将个别页面强制横屏其他页面竖屏  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  如何快速完成中国万网建站详细流程?  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  三星网站视频制作教程下载,三星w23网页如何全屏?  焦点电影公司作品,电影焦点结局是什么?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  微信推文制作网站有哪些,怎么做微信推文,急?  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  高端建站如何打造兼具美学与转化的品牌官网?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何快速生成凡客建站的专业级图册?  如何在IIS服务器上快速部署高效网站?  智能起名网站制作软件有哪些,制作logo的软件?  ,交易猫的商品怎么发布到网站上去?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  Laravel中的withCount方法怎么高效统计关联模型数量  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  JavaScript模板引擎Template.js使用详解  js实现获取鼠标当前的位置