【C++简明教程】找数组或者Vector中最大最小值的索引

2023-10-27

导言

今天带来的程序是找出数组或者 Vector 中最大最小值的索引

在 Python 中,我们可以使用 numpy 库快速实现,那接下来就看看 C++ 是怎么实现的吧

主要使用到的函数是 max_elementmin_element

基本用法如下,分为数组和 vector:

max_element(arr, arr+arr_length) //arr 是数组,arr_length 是数组长度
max_element(v.begin(), v.end()) // v 是 vector数据结构

基本程序

#include <iostream>
#include<vector>
#include<algorithm>

using namespace std;


int main(int argc, char** argv) {
 float arr[] = { 1.0, 2.0, 3.5, 6.7, 1.22, 0.77, 90.0, 36.11 };
 int arr_length = sizeof(arr) / sizeof(arr[0]);  // 数组长度
  // max_element(arr, arr+arr_length) 计算出来是一个地址,我们需要取该地址的值
 cout << "max val is: " << *max_element(arr, arr+arr_length) << "\t the max val index is " << max_element(arr, arr + arr_length)-arr << endl;
 cout << "min val is: " << *min_element(arr, arr+arr_length) << "\t the min val index is " << min_element(arr, arr + arr_length) -arr<< endl;

 /*
 vector<double> v = {1.0, 3.55, 2.33, 4.55, 2.11, 7.66, 9.00, 7.1, 88.66, 76.99};
 auto biggest =  max_element(v.begin(), v.end());
 auto smallest = min_element(v.begin(), v.end());
 cout << "max val is: " << *biggest << "\t the max val index is "<< distance(v.begin(), biggest)<<  endl;
 cout << "min val is: " << *smallest << "\t the min val index is " << distance(v.begin(), smallest)<< endl;
 */
 return 0;
}

细节问题

以下程序是笔者遇到过的一个问题,希望能够启发到你

#include <iostream>
#include<vector>
#include<algorithm>
#include<random>
#include<cstdlib>  // 随机数生成相关的
#include<time.h>
using namespace std;


int main(int argc, char** argv) {
 srand((unsigned)time(NULL));  // 类似于随机种子
    
 vector<int> v_int = {};
 vector<float> v_float = {};
 
    float data;
 for (int i = 0; i < 10; i++)
 {
  data = rand()/ double(RAND_MAX); // 生成 [0,1] 的随机数
  v_int.push_back(data);
  v_float.push_back(data);
  cout << data << "\t";
 }
 cout << endl;
  // 对 v_int 进行查询
 auto biggest = max_element(v_int.begin(), v_int.end());
 auto smallest = min_element(v_int.begin(), v_int.end());
 cout << "max val is: " << *biggest << "\t the max val index is " << distance(v_int.begin(), biggest) << endl;
 cout << "min val is: " << *smallest << "\t the min val index is " << distance(v_int.begin(), smallest) << endl;

 return 0;
}

上面运行得到的结果是下面这样,主要的原因是虽然我们加入到 float 类型的数据,但是 v_int 中元素的类型是 int 类型,所以对加入的每个元素进行强制类型转换,所以 v_int 中所有的数据都变成了 0,导致实际结果与预期不符。


机器视觉 CV

与你分享 AI 和 CV 的乐趣

分享数据集、电子书、免费GPU

长按二维码关注我们

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【C++简明教程】找数组或者Vector中最大最小值的索引 的相关文章

随机推荐

  • 色温

    色温是表示光线中包含颜色成分的一个计量单位 从理论上说 黑体温度指绝对黑体从绝对零度 273 开始加温后所呈现的颜色 黑体在受热后 逐渐由黑变红 转黄 发白 最后发出蓝色光 当加热到一定的温度 黑体发出的光所含的光谱成分 就称为这一温度下的
  • 线程池OOM错误

    1 LinkedBlockingQueue报错 package com spring pro threadpool completableFuture youhua test import java util concurrent Exec
  • 【场景】大数据常考场景题 - Bitmap

    大数据开发面试通常会问场景题 主要考察大数据中常用的数据结构 比如 Bitmap Bloom Filter 等等 今天就说一个工作中碰到的 比如昨天说到的问题 用户要在自定义时间区间内查询 就需要快速响应 可能用到 ClickHouse 可
  • Ubuntu 下安装 apt-get install npm

    步骤一 sudo apt get remove nodejs npm 删除原来的 sudo apt get install curl curl sL https deb nodesource com setup sudo bash sudo
  • 第十一届蓝桥杯国赛 奇偶覆盖

    我的主要思路是找到每个矩形内的单位方格 再使用set集合将所有方格统计 最后在set集合里遍历每一个方格 统计其再矩形里出现的次数 即为面积 再蓝桥刷题系统上只能过30 有优化方案的欢迎私信讨论 矩形类 class The it def i
  • Angular4 使用GET向后端请求数据

    Angular4 使用GET向后端请求数据 在工程的src app app module ts的头部引入http jsonp import HttpModule JsonpModule from angular http 在工程的src a
  • 线程池实例

    public Executor asyncServiceExecutor ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor 配置核心线程数 executor setCore
  • 日常Linux操作命令使用手册

    OS 查看操作系统 cat etc issue GPU 查看GPU 利用率 nvidia smi 文件和空间 查看linux文件目录的大小和文件夹包含的文件数 查看磁盘使用情况 df h 统计总数大小 du sh xmldb du sm s
  • Java: 断言(assert)

    断言 assert 语句一般用于程序不准备通过捕获异常来处理的错误 例如 账号交易时 对于支出的金额为正数 收入 支出 纯收入 或者收入的金额为负数 程序必须立即停止执行 同时发现错误 当正式收益时 就可以避开错误 但仍保留断言语句在程序中
  • 6.28同花顺笔试

    笔试共22题 题型比较多 选择 简答 编程 开放逻辑题都有 笔试时长2h 对深度学习方面考察的比较多 包含性能评价指标 常见定义等 选择题与简答题 1 提高深层神经网络特征表达能力的方法 题目问的下列哪个方法无法用来提高 a 增加层深度 b
  • 微信小程序遇到does not have a method “xxxx“ to handle event “tap“

    刚开始学小程序的小白 学到事件绑定的时候 跟着老师的步骤一步一步把代码输入好 结果发现和老师的结果不大一样 我在网上找了很多方法 有说多打空格的 有说要写进method 里的 都试过 没用 结果意外之下 我随手取消勾选 将JS编译成ES5
  • 2022.08 VMware官网下载安装+配置Linux虚拟机,最新最全

    前言 文章概要叙述 步骤一 安装VMware VMware 安装包下载 VMware官方下载页面 1 1小节 步骤二 配置虚拟机 步骤三 安装操作系统 CentOS7 9 镜像文件下载 CentOS阿里云镜像下载页 2 2 1小节 一 VM
  • UE4 获取目录下所有的图片转换成Texture2D并通过UMG显示出来

    主要内容 本文主要讲解简单插件的编写 将类继承至Subsystem 子系统 框架的好处 鼠标射线检测以及鼠标拖拽功能的实现 实现步骤 一 编写插件 1 首先新建一个空的C 项目 然后新建插件 Author是作者名 Description是描
  • 《Linux入门与基础》课程教案

    Linux入门与基础 linux的目录结构 打开终端 输入ls查看linux根目录下的情况 ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sy
  • 常用电路设计之分频器的设计

    引言 分频器在实际数字电路设计中是最基础的 也是最重要的 常见的分频器主要有偶数倍分频器 奇数倍分频器 半整数倍分频器 任意小数倍分频器等 本文主要对最常用的偶数倍分频器和奇数倍分频器展开介绍 1 偶数倍分频器 偶数倍分频器通过计数器可以很
  • uniapp自定义tabbar,中间凸起(支持H5、微信小程序)

    最近公司需要做一款app 需要中间按钮凸起 在网上找了一些 参考文献 做了一个demo H5效果图如下 小程序效果图如下 目录结构如下 page json的配置如下 pages path pages index index style na
  • 面试:字符串: 提取IP地址

    题目 给定一个只含数字的字符串 返回所有合法的ip地址 算法 ip地址是4段 每段三个情况 1 只取一个数字 2 取两个数字 第一个数字不是0 3 取三个数字 第一个数字不是0 而且三个数组成的数小于256 递归 import java u
  • React前端渲染优化--父组件导致子组件重复渲染的问题

    1 适用场景 当父组件本身状态更新时 这个状态并没有作为props传给子组件 也会触发子组件更新机制 这样就造成了组件重复渲染的问题 2 解决 类组件 pureComponent 它是一个类 组件继承自它后 其作为子组件时 每次父组件更新后
  • 数据库视图、触发器

    1 delete和truncate区别 在有自动增长的前提上 用delete清空表后再插入数据 id会从被删除的最大的id 1开始 用 truncate清空表后再插入数据 id会从起始值开始 2 索引 唯一索引 已存在表 alter tab
  • 【C++简明教程】找数组或者Vector中最大最小值的索引

    导言 今天带来的程序是找出数组或者 Vector 中最大最小值的索引 在 Python 中 我们可以使用 numpy 库快速实现 那接下来就看看 C 是怎么实现的吧 主要使用到的函数是 max element 和 min element 基