c++对于vector等类型的数据处理,经常会涉及到排序,顺序,逆序,或者根据某一个每一个条件排序.今天来捋一捋

==> 实际上发现已经有英文的整理版本,附上链接

1.实现vector元素的顺序排列


// C++ program to sort a vector in non-decreasing
// order.
#include <bits/stdc++.h>
using namespace std;int main()
{vector<int> v{ 1, 5, 8, 9, 6, 7, 3, 4, 2, 0 };sort(v.begin(), v.end());cout << "Sorted \n";for (auto x : v)cout << x << " ";return 0;
}

2. 实现vector元素的逆序排列


// C++ program to sort a vector in non-increasing
// order.
#include <bits/stdc++.h>
using namespace std;int main()
{vector<int> v{ 1, 5, 8, 9, 6, 7, 3, 4, 2, 0 };sort(v.begin(), v.end(), greater<int>());cout << "Sorted \n";for (auto x : v)cout << x << " ";return 0;
}
template <class T> struct greater : binary_function <T,T,bool> {bool operator() (const T& x, const T& y) const {return x>y;}
};

其实,这就是一个标准库自带的函数模板,如果我们用less<int>作为第三个参数,那么就是顺序排列

3. 按照某一属性排列

对于一个对象,我们希望按照它的某一个属性进行排列,那要怎么实现呢?

其实根据第二个例子,就知道原理就是定义一个bool函数,设定比较的规则

"比较函数"的关键:
形参: 要比较的对象

返回值: bool

规则:

less==>true :ascending  升序排列

greater==>true: descending 降序排列

下面的代码: 我们要排列car这个对象,其中根据它的属性 position

struct也可以设置constuctor哦

/*************************************************************************> File Name: struct_sort.cpp> Author: > Mail: > Created Time: So 25 Jul 2021 20:31:53 CEST************************************************************************/
#include <algorithm>
#include <vector>
#include<iostream>
using namespace std;struct car{double speed;double position;car(double speed, double position):speed(speed),position(position){speed = speed;position = position;}};bool comparecar(car& car1,car& car2)
{return (car1.position<car2.position);//less =>ascending
}int main()
{vector<car> fleet{{1,3},{4,2},{3,5},{6,7},{2,9}};sort(fleet.begin(),fleet.end(),comparecar);for (auto x:fleet){cout<<x.position<<"   "<<x.speed<<endl;}}

4. 反向遍历

用迭代器,我们也可以实现对于vector的反向遍历,比如

这就可以用rbegin和rend实现元素的反向遍历

5. 求最值

我们想求一个vector中的最大最小值, c++也提供了对应的函数

/*************************************************************************> File Name: getVecMin.cpp> Author: > Mail: > Created Time: Mo 26 Jul 2021 08:43:02 CEST************************************************************************/
#include <vector>
#include <algorithm>
#include<iostream>
using namespace std;int main()
{vector<int> array ={1,5,4,5,6,3,22,99};cout<<"Max "<<*max_element(array.begin(),array.end())<<endl;cout<<"Min "<<*min_element(array.begin(),array.end())<<endl;
}

C++排序求最值函数的调用相关推荐

  1. excel减法函数_发现EXCEL隐藏功能,SUMIFS函数居然可以多条件求差值看了不后悔...

    在EXCEL中,SUMIFS函数是"多条件求和"函数,但是我们工作需要完成多条件求差,EXCEL里是没有"多条件求差值"函数的,所以我们可以逆向利用多条件求和函 ...

  2. 函数:无参无返回值函数的使用

    1.定义格式 函数构成代码执行的逻辑结构,在go语言中,函数的基本组成为:关键字func.函数名.参数列表.返回值.函数体和返回语句 go语言中函数定义的格式如下: func FuncName(/参数 ...

  3. 自定义函数fac1用递推方法求n!,自定义函数fac2用递归方法求n!,主函数中输入整数n(0≦n≦10)后,分别调用函数fac1和函数fac2求n!,最后输出调用的结果值进行对比。

    自定义函数fac1用递推方法求n!,自定义函数fac2用递归方法求n!,主函数中输入整数n(0≦n≦10)后,分别调用函数fac1和函数fac2求n!,最后输出调用的结果值进行对比. 参考运行截图: ...

  4. 《spark技术应用》课程期末考试大作业报告,使用eclipse完成求top值、文件排序、二次排序三个程序的个性化开发。

    ​​​​目录 一.选题的目的及要求... 4 二.设计思路... 4 三.主要内容及关键技术.. 5 四.制作步骤... 5 1.准备工作... 5 1.1在VMware中安装一台Ubuntu64位系 ...

  5. 求带便函数权值的最短路径

    function [distance,path]=zuiduanlujing(D,start1,terminal); %求带便函数权值的最短路径 %嵌套调用函数 [B,F]=datainfun;   ...

  6. Python基础day04【函数(定义与调用、文档说明、传参函数、全局变量、返回值、嵌套调用)】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day04[字典]    目录 3.函数 函数的定义和调用 函数定义 PEP8规范 ...

  7. mysql编写函数 求1 n 偶数之和,编写求1 2 3 - n的函数.在main函数中调用该函数

    输入两个正整数m,n,编写求阶乘的函数,计算m!/(n!*(m-n)!). C语言函数解答,谢谢. #includelongfactorial(intm,intn){longsum=1,sum1=1; ...

  8. c语言学习-自定义函数并调用求1-100的累计和

    自定义函数并调用求1-100的累计和 程序流程图: 代码: #include<stdio.h> int sum(int m ) {int f; long s=0; for(f=1;f< ...

  9. c语言中fact函数怎么调用,C语言程序题: 1、编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现...

    点击查看C语言程序题: 1.编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现具体信息 答:int fac(int n) //非递归{int f=1; for(;n;) ...

最新文章

  1. c语言字符串机考题,2016全国计算机二级《C语言》机考试题及答案
  2. BZOJ1901Zju2112 Dynamic Rankings——树状数组套主席树
  3. AI 经典书单 | 人工智能学习该读哪些书
  4. 数据库设计中,多对多关系使用使用逗号分割关联讨论
  5. xcode 4.3 调试的时候显示汇编,怎么办
  6. 如何处理VMware启动虚拟机时的错误信息Failed to lock the file
  7. 中livechart显示大数据_Servlet中利用jdbc加载显示数据
  8. 洛谷 P1067 多项式输出
  9. Python机器学习 集成算法实例
  10. react native camera
  11. Python 找完美数
  12. 计算机高中期末总结作文,高中学期总结作文
  13. 人文视野中的生态学题库
  14. bat命令修改文件夹的后缀名
  15. Recovering a NOARCHIVELOG Database with Incremental Backups
  16. 【洋葱软件库-洋葱分享库】
  17. 解决Vs2015+Qt+obs studio配置软件环境问题汇总
  18. PHP导出Excel文件时导出列的数字长度太长时显示不完整或者乱码显示
  19. Stage 222222 —— 逆向工程拆除“二进制炸弹”程序
  20. maven-springmvc工程

热门文章

  1. OVERLAPPED I/O 异步APC
  2. NASA顶级程序员编程十大原则
  3. 轴功率测试软件,船用轴功率检测仪 在线轴功率测量装置
  4. Single-Stage 6D Object Pose Estimation——6D姿态估计
  5. 使用Python做接口测试
  6. Mendix低代码的与众不同之处
  7. FI和MM集成自动记账-采购收货发票校验业务-OBYC
  8. delhpi 身份证校验
  9. IT业的《大腕》经典台词
  10. 「实战」谷歌广告账户可以退款吗?怎么退款?