首页 > 编程语言 >C++ 获取 vector 最大的 3 个数字

C++ 获取 vector 最大的 3 个数字

时间:2023-12-19 11:01:59浏览次数:38  
标签:std sort begin end C++ 获取 vector scores

假设现在有一个数组存储了成绩信息,要获得前三名

#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());

标签:std,sort,begin,end,C++,获取,vector,scores
From: https://www.cnblogs.com/zkmjolnir/p/17913203.html

相关文章

  • R语言采集获取58商铺出租转让信息
    前两篇文章给我一个朋友分析出店铺商品以及地址房源信息,后来去看了下店铺房租有点贵,还是毛坯房,要自己装修,本着节约成本的原则。熬了个通宵,给他采集了一些转租商铺数据,因为数据比较多,过于先进不方便展示,我就将我爬虫程序的模版展示给大家观看,希望能帮助大家。在R语言中,你可以使用rve......
  • Python获取服务器IP地址
    一、依赖importsocket二、获取#获取计算机名称hostname=socket.gethostname()#获取本机IPip=socket.gethostbyname(hostname)三、结果......
  • c++学习书籍
      C++ Primer 第五版 第四版 对比 差异C++Primer是一本经典的C++编程教材,它的第五版与第四版有哪些不同点呢?首先,C++Primer第五版引入了C++11标准,讲解了C++11的新特性,例如auto类型推导、lambda表达式、右值引用、智能指针等等。这些新特性有助于提高C++程序的性能......
  • C++ Qt开发:TableWidget表格组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TableWidget表格组件的常用方法及灵活运用。QTableWidget是Qt中用于显示表格数据的部件。它是......
  • C++ Qt开发:MdiArea多窗体组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍MdiArea`组件的常用方法及灵活运用。QMdiArea(MultipleDocumentInterfaceArea)是Qt中用于创建多......
  • C++基础 -9- 函数的默认参数
     ———————函数的默认参数——————— ......
  • c/c++中typedef定义结构体内成员赋初值
    写数据结构作业时遇到的问题:需要给typedef定义的结构体中的成员数组赋初值。如下:写数据结构作业时遇到的问题:需要给typedef定义的结构体中的成员数组赋初值。如下:typedefstruct{Node*nodes[maxsize];intfront,rear;}Queue;赋值方法如下:Queuenodes={{0},1,0};......
  • 不容错过的 13 个顶级 C++ 程序库
    不容错过的13个顶级C++程序库Incredibuild​已认证账号​关注 135人赞同了该文章关于C++,不论是其长达40年的发展历史,或者C++是高级还是低级编程语言的争论等等,这些内容都已老生常谈。如果你对C++库有所研究,不用我多说,大家也都心中......
  • 发布 VectorTraits v1.0, 它是C#下增强SIMD向量运算的类库
    发布VectorTraitsv1.0,它是C#下增强SIMD向量运算的类库zyl910吃瓜群众​关注 你经常看C#话题的内容发布VectorTraitsv1.0,它是C#下增强SIMD向量运算的类库VectorTraits:SIMDVectortypetraitsmethods(SIMD向量类型的特征方法).N......
  • go服务get请求中携带分号(;)时报错,获取不到参数的问题
    前言我们在写get方式的api请求时,有时候会用这样的一种方式携带参数:http://ip:port/a/b?query=key:1;value:2&other=xxx,这里我们注意到query一个字段其实是携带了等子字段的,一个是key,一个是value;这在go1.17版本之前是没有问题的。但是在1.17之后打印警告,在1.20之后,go服务......