【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中最大最小值的索引 的相关文章

  • 为什么转发引用与右值引用具有相同的语法?

    我刚刚对这些 相当 新的功能做了一些研究 我想知道为什么 C 委员会决定为它们引入相同的语法 看来开发人员不必要浪费一些时间来理解它是如何工作的 而一种解决方案可以让我们思考进一步的问题 就我而言 它是从问题开始的 可以简化为 includ
  • 如何在模板参数列表中传递模板函数

    假设我有一个template功能 template
  • 使用智能指针在大型对象集合中创建多个索引

    我正在为一个大型对象集合创建多个索引 即使用不同的键 对象可以改变 集合可以缩小和增长 到目前为止我的想法 保留某种指向对象的指针的多个集合 使用set代替map以获得更好的封装 使用 unordered set 可以很好地扩展大型数据集
  • HUGE_VALF 和 INFINITY 常量之间的区别

    在 OpenCL 中 有两个代表无穷大的浮点数学常数 其中之一很简单INFINITY 另一个 HUGE VALF 求值为 无穷大 这两者有什么区别 求值至 无穷大是什么意思 HUGE VALF是一个旧名称 允许不支持无穷大的浮点系统 例如
  • 整数的复制与 std::move

    在该示例中 默认复制和 std move 有什么区别 After move新旧对象之间是否存在依赖关系 int main int a 100 std cout lt lt a lt
  • std::thread::id 的 std::operator== 中的分段错误

    我遇到了一个问题 我不确定如何解决 我相信这是 GCC 和 或 libstdc 中的问题 我正在运行 Ubuntu 14 04 LTS 和 GCC 4 8 2 19ubuntu1 libstdc 3 4 19 我相信 如何找到 Linux
  • 编写openCL代码时,在没有GPU的单核机器上表现如何?

    大家好 我目前正在将光线追踪器从 FORTRAN 77 移植到 C 语言以进行研究项目 移植了要点之后 问题是我们如何进行并行化 在实验室中 我可以使用几台不同的 Opteron 机器 具有 2 到 8 个内核 但没有 GPU 目前 我们正
  • 这个C++0x优化合法吗?

    C 0x编译器优化是否合法 int func int a a 3 return a to int func int a return 3 或另一个 POD 不是这样的per se 因为函数必须修改变量a是等价的 也就是说 在内联和一些简单的
  • 类和互斥体

    假设我有一个类代表一些名为 foo 的数据结构 class foo public foo attr01 0 void f attr01 5 private int attr01 class fooSingleThreadUserClass
  • 从无序关联容器中移动对象

    c 0x 中有没有办法将对象从无序关联容器中移出 我需要合并两个单独的无序集合 如果涉及右值 我希望 回收 即将停止的集合中的项目 事实是 unordered set 的迭代器仅提供对存储项的 const 引用 我最初想过使用 const
  • 显式移动向量是否可以消除隐式复制向量?

    我在接受的答案中读到here https stackoverflow com questions 4782757 rule of three becomes rule of five with c11 that a 对于显式声明移动构造函数
  • C++:将模板参数的模板类型成员添加为好友的正确语法?

    我有一个带有模板类型参数 tTRAIT 的类 我想加一个模板为好友type member aliastTRAIT 但我无法弄清楚语法 这可能吗 template
  • std::copy/memcpy/memmove 优化

    我查看了 GCC STL 4 6 1 并看到std copy 使用优化版本以防内置 is trivial 评估为true 自从std copy and std reverse copy 模板对于复制数组中的元素非常有用 我想使用它们 但是
  • 如何检查用户在EditText中输入自己的电话号码?

    用户将在我的 Android 应用程序的注册页面上的编辑文本中输入手机号码 如何检查用户输入的是他 她的手机号码而不是其他人的 我试过这个 TelephonyManager tMgr TelephonyManager mAppContext
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 为什么 std::numeric_limits::min() 在使用不同函数流式传输到输出时行为不同?

    我有一个奇怪的行为 std numeric limits
  • PyOpenCL:如何创建本地内存缓冲区?

    这里可能是非常简单的问题 但我已经搜索了几个小时但没有任何结果 我有这段代码 我希望有一个 256 位 8 uint32 bitstring gpu 作为设备中的本地内存指针 def Get Bitstring GPU Buffer ctx
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template

随机推荐

  • 色温

    色温是表示光线中包含颜色成分的一个计量单位 从理论上说 黑体温度指绝对黑体从绝对零度 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 基