Нахождение минимального и максимального значений в std :: vector из std :: pair - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь найти минимальное / максимальное значение в векторе pair<int, std::string>

Мой код:

#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';
}

Результат, который я хочу:

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

Как получить желаемый результат?


РЕДАКТИРОВАНИЕ:

Вот мое пока решение.

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

Хотя это работает, я хотел бы изучить более простое и быстрое решение, чем это.

1 Ответ

0 голосов
/ 30 августа 2018

Вы можете использовать std::minmax_element:

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