当前位置: 首页 > news >正文

C++ vector 数组转换、查找、最大最小值、排序、排行的几种用法

C++ vector中常用到排序、取最值,一些场景可能还会要计算某个元素的排行,以下就是一些实际例子,精简、有效。

【1】会涉及到数组转vector:

vector<int> v(arr, arr + N);  // N为数组size,可用sizeof(arr)/sizeof(int) 计算。

【2】vector中 begin-end的两种用法:

v.begin(),  v.end() 

begin(v),  end(v)

【3】正排序用到sort():

 sort(v.begin(), v.end());       //默认是从小到大  //begin/end对调会失败

【4】逆排序可以调用 reverse辅助:

reverse(v.begin(), v.end());    //翻转//元素位置翻转

【5】查找指定元素的位置,如果已排序,则可以用来查找制定元素的排行:

int IDX = find(v.begin(), v.end(), int N) - v.begin();

 输出结果直接见代码中注释部分。

#include <iostream>
#include <algorithm>//max_element(),min_element()
#include <vector>
using namespace std;void main()
{//max_element用于返回最大值的下标,//*max_element用来取最大值//【1.1 对数组的排序】int a[5] = { 2, 3, 5, 4, 5 };cout << "maxVal=" << (*max_element(a, a + 5)) << "  maxLocal=" << max_element(a, a + 5) - a << endl;cout << "minVal=" << (*min_element(a, a + 5)) << "  minLocal=" << min_element(a, a + 5) - a << "\n\n";
//cout:
maxVal = 5  maxLocal = 2
minVal = 2  minLocal = 0//【1.2 对vector的排序】  //不精简//建议用下边end的那个//通过数组a的地址初始化,注意地址是从0到5(左闭右开区间)vector<int> b(a, a + 5);cout << "maxVal=" << *max_element(b.begin(), b.end()) << "  maxLocal=" << max_element(b.begin(), b.end()) - b.begin() << endl;cout << "minVal=" << *min_element(b.begin(), b.end()) << "  minLocal=" << min_element(b.begin(), b.end()) - b.begin() << "\n\n";
//cout:
maxVal = 5  maxLocal = 2
minVal = 2  minLocal = 0//【】v.begin() / begin(v) 验证是一样的。okcout << "maxVal=" << *max_element(begin(b), end(b)) << "  maxLocal=" << max_element(begin(b), end(b)) - begin(b) << endl;cout << "minVal=" << *min_element(begin(b), end(b)) << "  minLocal=" << min_element(begin(b), end(b)) - begin(b) << "\n\n";
//cout:
maxVal = 5  maxLocal = 2
minVal = 2  minLocal = 0//【2 指定元素的排行】//自己实现,先排序,再用findvector<int> c{ 0,1,2,3,4,5,6,7,8,9 };sort(c.begin(), c.end());       //默认是从小到大  //begin/end对调会失败reverse(c.begin(), c.end());    //翻转后变为从大到小//int IDX = find(c.begin(), c.end(), 7) - c.begin();  //9是指定元素的值//cout << "指定元素的降序排行=" << IDX << endl;
//cout:
指定元素的降序排行=2  【注意是降序】}

相关文章:

  • C++ 知识列表【图】
  • 【Linux对磁盘进行清理、重建、配置文件系统和挂载,进行系统存储管理调整存储结构】
  • Docker是什么
  • 开源图床LightPicture搭建本地图片管理系统并实现无公网IP远程访问
  • 【Linux】权限 !
  • 数据库安全-第一章 Mysql 安全基础-【web 环境搭建——LAMP-1】-LAMP LNMP 简介
  • wamp环境的组成
  • Linux_清理docker磁盘占用
  • list列表可编辑状态
  • element的el-autocomplete组件的使用(模糊匹配、自定义模板、远程搜索)
  • axios原理
  • JVM的组成部分(类加载器、运行时数据区、执行引擎、本地库接口)
  • docker ps -a 要求只显示自己想要的信息
  • docker使用http_proxy配置代理
  • 【Java网络编程02】套接字编程
  • 11111111
  • Leetcode 27 Remove Element
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Next.js之基础概念(二)
  • node学习系列之简单文件上传
  • Puppeteer:浏览器控制器
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Solarized Scheme
  • SQLServer之创建数据库快照
  • uni-app项目数字滚动
  • yii2中session跨域名的问题
  • 阿里云应用高可用服务公测发布
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 十年未变!安全,谁之责?(下)
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 优秀架构师必须掌握的架构思维
  • 再次简单明了总结flex布局,一看就懂...
  • 怎么将电脑中的声音录制成WAV格式
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #宝哥教你#查看jquery绑定的事件函数
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2)MFC+openGL单文档框架glFrame
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Note)C++中的继承方式
  • (WSI分类)WSI分类文献小综述 2024
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (转载)虚函数剖析
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET文档生成工具ADB使用图文教程
  • .php文件都打不开,打不开php文件怎么办
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [ C++ ] STL---stack与queue