std::sort是C++ STL中用于高效排序的函数,定义在头文件中,支持基本类型和自定义类型的排序。1. 对基本类型如int、double,默认使用升序排列,可通过std::greater实现降序。2. 对结构体或复杂对象,需提供自定义比较函数,该函数返回bool值表示第一个参数是否应排在第二个之前,例如按学生成绩从高到低排序。3. C++11起推荐使用Lambda表达式实现灵活排序逻辑,如先按分数降序再按名字升序。4. 注意事项包括:比较函数必须满足严格弱序;建议使用const引用避免拷贝;std::sort不保证稳定性,需稳定时用std::stable_sort;仅适用于支持随机访问迭代器的容器如vector,list应使用其成员函数sort。掌握这些用法可应对各类排序需求。
在C++中,std::sort 是 STL 算法库中最常用的排序函数之一。它定义在 gorithm> 头文件中,可以对数组、vector 等容器中的元素进行高效排序。默认情况下,它按升序排列,但你也可以通过自定义比较函数来控制排序规则。
对 int、double 等基本数据类型排序时,直接使用 std::sort 即可:
#include #include#include int main() { std::vector
nums = {5, 2, 8, 1, 9}; std::sort(nums.begin(), nums.end()); // 升序 // 输出: 1 2 5 8 9 std::sort(nums.begin(), nums.end(), std::greaterzuojiankuohaophpcnintyoujiankuohaophpcn()); // 降序 // 输出: 9 8 5 2 1}
当你需要对结构体、类对象或有特定排序逻辑的数据进行排序时,就需要传入自定义的比较函数。这个函数要返回布尔值,表示第一个参数是否“应该排在”第二个参数之前。
struct Student {
std::string name;
int score;
};
// 自定义比较函数:按分数
从高到低排序
bool cmp(const Student& a, const Student& b) {
return a.score > b.score; // 分数高的在前
}
int main() {
std::vector students = {
{"Alice", 85},
{"Bob", 92},
{"Charlie", 78}
};
std::sort(students.begin(), students.end(), cmp);
// 结果: Bob(92), Alice(85), Charlie(78)
}
使用 Lambda 表达式(推荐)
C++11 起支持 Lambda,写起来更简洁,尤其适合简单排序逻辑:
std::vector students = {/* ... */};
// 按名字字母顺序排序
std::sort(students.begin(), students.end(),
[](const Student& a, const Student& b) {
return a.name < b.name;
});
// 先按分数降序,分数相同时按名字升序
std::sort(students.begin(), students.end(),
[](const Student& a, const Student& b) {
if (a.score != b.score)
return a.score > b.score;
return a.name < b.name;
});
注意事项
基本上就这些。掌握好自定义比较方式,就能灵活应对各种排序需求了。
# go
# ai
# c++
# ios
# stream
# 排序算法
# 排列
# 数据类型
# Array
# sort
# 成员函数
# const
# 结构体
# bool
# int
# double
# 循环
# Lambda
# 对象
# 算法
# 自定义
# 升序
# 降序
# 第一个
# 第二个
# 排在
# 自己的
# 到低
# 头文件
# 迭代
相关文章:
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
建站主机选哪种环境更利于SEO优化?
如何规划企业建站流程的关键步骤?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
Python文件管理规范_工程实践说明【指导】
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
C#如何使用XPathNavigator高效查询XML
建站之星客服服务时间及联系方式如何?
如何在万网自助建站中设置域名及备案?
b2c电商网站制作流程,b2c水平综合的电商平台?
如何在香港服务器上快速搭建免备案网站?
高端网站建设与定制开发一站式解决方案 中企动力
如何续费美橙建站之星域名及服务?
金*站制作公司有哪些,金华教育集团官网?
如何通过商城自助建站源码实现零基础高效建站?
建站主机服务器选购指南:轻量应用与VPS配置解析
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
简单实现Android验证码
如何确认建站备案号应放置的具体位置?
装修招标网站设计制作流程,装修招标流程?
高端企业智能建站程序:SEO优化与响应式模板定制开发
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何选择靠谱的建站公司加盟品牌?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
做企业网站制作流程,企业网站制作基本流程有哪些?
电商网站制作公司有哪些,1688网是什么意思?
如何注册花生壳免费域名并搭建个人网站?
公司门户网站制作流程,华为官网怎么做?
建站之星如何快速生成多端适配网站?
如何用PHP工具快速搭建高效网站?
建站之星多图banner生成与模板自定义指南
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
浅谈Javascript中的Label语句
西安专业网站制作公司有哪些,陕西省建行官方网站?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
如何在景安云服务器上绑定域名并配置虚拟主机?
宝塔建站助手安装配置与建站模板使用全流程解析
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
模具网站制作流程,如何找模具客户?
香港服务器租用费用高吗?如何避免常见误区?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
如何在IIS中新建站点并配置端口与IP地址?
建站之星伪静态规则如何正确配置?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
如何通过商城免费建站系统源码自定义网站主题?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
建站主机服务器选型指南与性能优化方案解析
*请认真填写需求信息,我们会在24小时内与您取得联系。