当前位置: 首页 > 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++ vector 数组转换、查找、最大最小值、排序、排行的几种用法

C vector中常用到排序、取最值&#xff0c;一些场景可能还会要计算某个元素的排行&#xff0c;以下就是一些实际例子&#xff0c;精简、有效。 【1】会涉及到数组转vector&#xff1a; vector<int> v(arr, arr N); // N为数组size&#xff0c;可用sizeof(arr)/sizeof(i…...

vmware 安装Rocky-9.3系统

安装系统截图 安装完成&#xff0c;启动 查看版本和内核 开启远程登陆授权 1、编辑配置文件 #提升权限&#xff0c;输入su,并输入密码 su #编辑ssh文件开启root远程登陆 vi /etc/ssh/sshd_config找到以下内容&#xff1a;#PermitRootLogin prohibit-password 添加&#xff1a…...

C++提高编程——模板

本专栏记录C学习过程包括C基础以及数据结构和算法&#xff0c;其中第一部分计划时间一个月&#xff0c;主要跟着黑马视频教程&#xff0c;学习路线如下&#xff0c;不定时更新&#xff0c;欢迎关注。 当前章节处于&#xff1a; ---------第1阶段-C基础入门 ---------第2阶段实战…...

单线程、同步、异步、预解析、作用域、隐式全局变量、对象创建、new

单线程 进程 cpu 资源分配的最小单位一个进程可以有多个线程 线程 cpu调度的最小单位线程建立在进程的建立基础上的一次程序的运行单位 线程分为&#xff1a;单线程 多线程 单线程&#xff1a;js是单线程 &#xff08;同一个时间只能完成一个任务&#xff09;多线程&…...

《设计模式的艺术》笔记 - 外观模式

介绍 外观模式中外部与一个子系统的通信通过一个统一的外观角色进行&#xff0c;为子系统中的一组接口提供一个一致的入口。外观模式定义了一个高层接口&#xff0c;这个接口使得子系统更加容易使用。外观模式又称为门面模式&#xff0c;它是一种对象结构型模式。 实现 myclas…...

sql 查询时间范围内的数据

要查询特定时间范围内的数据&#xff0c;您可以使用 SQL 中的 BETWEEN 运算符。以下是一个示例查询&#xff0c;它从名为 your_table 的表中检索在 start_date 和 end_date 之间创建的所有记录&#xff1a; SELECT * FROM your_table WHERE created_date BETWEEN start_date AN…...

TestNG中的@BeforeSuite注释

目录 什么是BeforeSuite注解&#xff1f; BeforeSuite带注释的方法何时执行&#xff1f; BeforeSuite annotation有什么用&#xff1f; 所以&#xff0c;是时候集思广益了 我们可以在一个类中使用多个BeforeSuite注释方法吗&#xff1f; BeforeSuite放在超类上时如何工作…...

[学习笔记]刘知远团队大模型技术与交叉应用L3-Transformer_and_PLMs

RNN存在信息瓶颈的问题。 注意力机制的核心就是在decoder的每一步&#xff0c;都把encoder的所有向量提供给decoder模型。 具体的例子 先获得encoder隐向量的一个注意力分数。 注意力机制的各种变体 一&#xff1a;直接点积 二&#xff1a;中间乘以一个矩阵 三&#xff1a;…...

图像处理工具包Pillow的使用分享

Pillow 是 Python 中一个流行的图像处理库&#xff0c;它是 PIL&#xff08;Python Imaging Library&#xff09;的一个友好的分支版本。Pillow 提供了许多功能&#xff0c;使得图像处理变得容易和方便。下面是一些基本用法和示例&#xff1a; 安装 Pillow 首先&#xff0c;你…...

python进程间通信——命名管道(Named Pipe、FIFO)

文章目录 Python中的命名管道&#xff1a;深入理解进程间通信1. 命名管道简介2. 创建和删除命名管道3. 写入命名管道4. 读取命名管道5. 示例&#xff1a;进程间通信write_to_pipe.pyread_from_pipe.py测试运行 6. 注意事项和限制命名管道的半双工机制命名管道读写任意一方未打开…...

03 OSPF 学习大纲

参考文章 1 初步认识OSPF的大致内容(第三课)-CSDN博客 2...

HJ7 取近似值【C语言】

【华为机试题 HJ7】取近似值 描述输入描述:输出描述:示例1示例2参考代码1参考代码2参考代码3描述 写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于 0.5 ,向上取整;小于 0.5 ,则向下取整。 数据范围:保证输入的数字在 32 位浮点数范…...

php基础学习之常量

php常量的基本概念 常量是在程序运行中的一种不可改变的量&#xff08;数据&#xff09;&#xff0c;常量一旦定义&#xff0c;通常不可改变&#xff08;用户级别&#xff09;。 php常量的定义形式 使用define函数&#xff1a;define("常量名字", 常量值);使用cons…...

2024最新面试经验分享

目录 重点掌握的知识点JavaMySQLRedis 微服务分布式系统项目亮点场景题/设计题短链抢红包多租户 开放性问题自我介绍为什么跳槽团队规模如何带团队如何看待加班职业规划 主要针对Java程序员&#xff0c;当然也包含一些通用的内容。 重点掌握的知识点 需要重点掌握的知识点必须…...

《WebKit 技术内幕》之八(1):硬件加速机制

《WebKit 技术内幕》之八&#xff08;1&#xff09;&#xff1a;硬件加速机制 1 硬件加速基础 1.1 概念 这里说的硬件加速技术是指使用GPU的硬件能力来帮助渲染网页&#xff0c;因为GPU的作用主要是用来绘制3D图形并且性能特别好&#xff0c;这是它的专长所在&#xff0c;它…...

子表单扫码录入,显著节省填写时间

01/17 主要更新模块概览 扫 码 识 别 新 增 字 号 登 录 配 置 匹 配 搜 素 扫码识别 路径&#xff1a;表单设计 >> 字段属性 功能简介 之前对子表单扫码录入&#xff0c;是单独在组件内设置扫码&#xff0c;操作需重新点击扫码功能&#xff0c;手工新增子表数据&a…...

【Redis】Ubuntu安装配置

目录 一、安装Redis 1.1 从APT仓库安装Redis 二、启动&关闭&重启 三、Redis核心配置 3.1 CONFIG命令 3.2 redis.conf文件说明 一、安装Redis 1.1 从APT仓库安装Redis 从APT仓库可以安装最新的Redis稳定版&#xff0c;步骤如下&#xff1a; 【1】安装需要用到的…...

idea远程服务调试

1. 配置idea远程服务调试 这里以 idea 新 ui 为例&#xff0c;首先点击上面的 debug 旁边的三个小圆点&#xff0c;然后在弹出的框框中选择 “Edit”&#xff0c;如下图所示。 然后进入到打开的界面后&#xff0c;点击左上角的 “” 进行添加&#xff0c;找到 “Remote JVM De…...

Google Colab运行Pytorch项目

Google Colab运行Pytorch项目 连接google drive切换到某一文件夹显示当前目录文件安装依赖执行py文件numpy相关numpy.random.randn() 参考文章&#xff1a;文章1 文章2 连接google drive from google.colab import drive import os drive.mount(/content/drive)切换到某一文件…...

Android Studi安卓读写NDEF智能海报源码

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?id615391857885&spma1z10.5-c.w4002-21818769070.11.1f60789ey1EsPH <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmln…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

高效的后台管理系统——可进行二次开发

随着互联网技术的迅猛发展&#xff0c;企业的数字化管理变得愈加重要。后台管理系统作为数据存储与业务管理的核心&#xff0c;成为了现代企业不可或缺的一部分。今天我们要介绍的是一款名为 若依后台管理框架 的系统&#xff0c;它不仅支持跨平台应用&#xff0c;还能提供丰富…...

拟合问题处理

在机器学习中&#xff0c;核心任务通常围绕模型训练和性能提升展开&#xff0c;但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正&#xff1a; 一、机器学习的核心任务框架 机…...