首页 > 后端开发 > C++ > 正文

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

裘德小鎮的故事
发布: 2025-11-25 17:52:02
原创
974人浏览过
std::sort 是C++中高效排序工具,需包含<algorithm>和<vector>头文件,支持默认升序、降序及自定义类型排序,通过迭代器指定范围并可传入比较函数或lambda表达式实现灵活排序。

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

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

包含必要的头文件

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

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

默认升序排序

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

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

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

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

自定义排序规则

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

v0.dev
v0.dev

Vercel推出的AI生成式UI工具,通过文本描述生成UI组件代码

v0.dev 261
查看详情 v0.dev

例如,降序排序:

std::sort(nums.begin(), nums.end(), [](int a, int b) {
  return a > b;
});
// 结果:{9, 8, 5, 2, 1}

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

#include <functional>
std::sort(nums.begin(), nums.end(), std::greater<int>());

对结构体或类对象排序

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

struct Student {
  string name;
  int score;
};

vector<Student> 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等容器进行快速排序的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号