Как получить самую длинную строку в наборе строк в C ++ - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть набор строк

set<string> strings;

Как получить самую длинную строку, содержащуюся в наборе?В python я мог бы сделать следующее:

print max(strings, key=len)

Есть ли подобная функция в c ++?

1 Ответ

0 голосов
/ 20 сентября 2018

Вы можете использовать std::max_element, который поставляется с заголовком <algorithm> и передавать пользовательский предикат сравнения.

#include <algorithm>
#include <iostream>

const auto longest = std::max_element(strings.cbegin(), strings.cend(),
    [](const std::string& lhs, const std::string& rhs) { return lhs.size() < rhs.size(); });

if (longest != strings.cend())
    std::cout << *longest << "\n";

Это явно не так кратко, как версия Python,и это где диапазоны на помощь.С проекциями range-v3 это сводится к

#include <range/v3/all.hpp>

const auto longest = ranges::max_element(strings, std::less<>{}, &std::string::size);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...