【发布时间】:2016-06-08 18:20:58
【问题描述】:
我有一个看起来像这样的容器:std::map<size_t, std::set<char>>
我想根据std::set 的大小找到阈值x 以上的绝对最大元素和最小元素。
我可以使用以下行获取最大值和最小值:
auto minMaxElements = std::minmax_element(cbegin(map), cend(map),
[](const auto &lhs, const auto &rhs){
return lhs.second.size() < rhs.second.size();
});
是否可以使用 std::minmax_element 使最小元素高于阈值x?
示例:
假设我有一个 std::map 的 5 元素。 std::set 值的大小为1, 2, 1, 10, and 5。我将阈值设置为1,然后我希望最大元素给出包含std::set 大小为10 的迭代器,最小元素给出包含std::set 大小为2 的迭代器。
【问题讨论】:
-
排序不是最有效的方法吗?
-
地图由
size_t索引,我希望它保持这种状态。我不希望它使用值的大小来制作地图。 -
key和map的可能值是什么?如果size_t指定set的大小,它是map 的值部分,那么map 不会存储所有集合。 -
密钥与集合的大小无关。
-
你可能会看一些range library,然后你可以在filtered视图上做
std::minmax_element。
标签: c++