我有一组字符串
set<string> strings;
如何获得集合中包含的最长字符串?在 python 中我可以执行以下操作:
print max(strings, key=len)
c++中有类似的函数吗?
最佳答案
您可以使用 std::max_element
随 <algorithm>
一起提供 header 并传递自定义比较谓词。
#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);
关于c++11 - C++中如何获取一组字符串中最长的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52419536/