C++ 获取 vector 最大的 3 个数字
假设现在有一个数组存储了成绩信息,要获得前三名
#include <iostream> #include <vector> #include <algorithm> std::vector<int> scores{10, 30, 90, 30, 100, 20, 10, 0, 30, 40, 40, 70, 70};
下面这种方法可以将前3名成绩复制到结果里,同时考虑到 scores 长度小于 3 的情况。
std::vector<int> result(scores.size() < 3 ? scores.size() : 3); std::partial_sort_copy(scores.begin(), scores.end(), result.begin(), result.end(), std::greater<int>());
std::partial_sort_copy - cppreference.com
std::greater - cppreference.com
如果不介意对 scores 进行修改的话,可以这样做,std::sort
默认是升序排列,通过设定第三个参数指定排序依据。
std::sort(scores.begin(), scores.end(), [](int a, int b) { return a > b; }); // sort inversly std::sort(scores.begin(), scores.end(), std::greater<int>()); // sort inversly (better approach) int length = scores.size() > 3 ? 3 : scores.size(); for (auto c : std::vector<int>(scores.begin(), scores.begin() + length)) { std::cout << c << std::endl; }
如果是只需要获取最大值:
int result = *std::max_element(scores.begin(), scores.end());
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人