• 问题反馈可发送邮件到stubbornhuang@qq.com

  • 感谢大家访问本站,希望本站的内容可以帮助到大家!

  • 本站会放置Google广告用于维持域名以及网站服务器费用。

  • 在本站开通年度VIP,无限制下载本站资源和阅读本站文章

  • 计算机图形学与计算几何经典必备书单整理,下载链接可参考:https://www.stubbornhuang.com/1256/

  • 工资「喂饱肚子」,副业「养活灵魂」!

  • 如果觉得本站的内容有帮助,可以考虑打赏博主哦!

  • 本站由于前段时间遭受到大量临时和国外邮箱注册,所以对可注册的邮箱类型进行了限制!

  • 欢迎大家交换友链,可在https://www.stubbornhuang.com/申请友情链接进行友链交换申请!

C++ – 获取std::vector中的最小值、最大值以及对应的索引

C++ 发布于2023-03-23 阅读 3,310次 0次评论 0次点赞 本文共1801个字,阅读需要5分钟。

1 获取std::vector中的最小值最大值以及对应的索引

1.1 普通方法

普通方法就是遍历std::vector,对vector中的值进行一一对比,找出最小值、最大值及其对应的索引,示例代码如下

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

int main()
{
    std::vector<float> example_vector = {1.3,0.5,3.2,4.5,6.5,8.9,6.2,10.7,2.3};

    // 找出最小值以及最小值索引
    float min_value = std::numeric_limits<float>::max();
    int min_value_index = -1;

    for (int i = 0; i < example_vector.size(); ++i)
    {
        if (example_vector[i] < min_value)
        {
            min_value = example_vector[i];
            min_value_index = i;
        }
    }

    std::cout << "min_value_index = " << min_value_index << ", min_value = " << min_value << std::endl;

    // 找出最大值以及最大值索引
    float max_value = std::numeric_limits<float>::min();
    int max_value_index = -1;

    for (int i = 0; i < example_vector.size(); ++i)
    {
        if (example_vector[i] > max_value)
        {
            max_value = example_vector[i];
            max_value_index = i;
        }
    }

    std::cout << "max_value_index = " << max_value_index << ", max_value = " << max_value << std::endl;

    return 0;
}

程序输出:

min_value_index = 1, min_value = 0.5
max_value_index = 7, max_value = 10.7

1.2 使用algorithm

我们可以使用algorithm中的std::min_elementstd::max_element的方法获取最大值最小值,然后使用std::distance获取迭代器对应的在std::vector中的索引,示例代码如下:

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

int main()
{
    std::vector<float> example_vector = {1.3,0.5,3.2,4.5,6.5,8.9,6.2,10.7,2.3};

    // 找出最小值
    std::vector<float>::iterator smallest = std::min_element(example_vector.begin(), example_vector.end());

    float min_value = *smallest;

    // 获取最小值索引
    int min_value_index = std::distance(example_vector.begin(), smallest);

    std::cout << "min_value_index = " << min_value_index <<", min_value = "<< min_value << std::endl;


    // 找出最大值
    std::vector<float>::iterator biggest = std::max_element(example_vector.begin(), example_vector.end());

    float max_value = *biggest;

    // 获取最大值索引
    int max_value_index = std::distance(example_vector.begin(), biggest);

    std::cout << "max_value_index = " << max_value_index << ", max_value = " << max_value << std::endl;

    return 0;
}

程序输出:

min_value_index = 1, min_value = 0.5
max_value_index = 7, max_value = 10.7

欢迎扫码关注我的微信公众号,及时获取文章更新

微信公众号二维码

本文作者:StubbornHuang

版权声明:本文为站长原创文章,如果转载请注明原文链接!

原文标题:C++ – 获取std::vector中的最小值、最大值以及对应的索引

原文链接:https://www.stubbornhuang.com/2561/

发布于:2023年03月23日 15:51:06

修改于:2023年06月21日 16:53:07

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

文章末尾
上一篇
NCNN - 在windows上转换onnx模型为ncnn的param,bin格式
NCNN
下一篇
OnnxRuntime – 模型部署笔记3,总结OnnxRuntime模型推理流程
OnnxRuntime
当前分类随机文章推荐

发表评论

您必须 [ 登录 ] 才能发表留言!

关注我们的公众号

微信公众号