简体   繁体   English

在std :: pair的std :: vector中找到最小值和最大值

[英]Finding the minimum and maximum values in a std::vector of std::pair

I'm trying to find out minimum/maximum value in a vector of pair<int, std::string> 我试图找出向量pair<int, std::string>中的最小/最大值pair<int, std::string>

My Code : 我的代码:

#include <iostream>
#include <vector>
#include <string>

int main()
{
    std::vector<std::pair<int, std::string>> pairs;
    pairs = {{6,"a"}, {4,"b"}, {5,"c"}, {8,"d"}, {7,"e"}};

    int min = 0, max = 0;

    //how to find out min/max?

    std::cout << "Minimum Number : " << min << '\n';
    std::cout << "Maximum Number : " << max << '\n';
}

The Result I want : 我想要的结果:

Minimum Value : 4
Maximum Value : 8
Program ended with exit code: 0

How can I get the result I want? 如何获得想要的结果?


EDITED : 编辑:

Here's my so far solution. 这是我到目前为止的解决方案。

std::sort(pairs.begin(), pairs.end());
min = pairs[0].first;
max = pairs[pairs.size()-1].first;

Although it works, I would like to learn a simpler and faster solution than this. 尽管它可以工作,但我想学习一个比这更简单,更快的解决方案。

You might use std::minmax_element : 您可以使用std::minmax_element

 const auto p = std::minmax_element(pairs.begin(), pairs.end());
 auto min = p.first->first;
 auto max = p.second->first;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM