如何像在 std::set 中一样在 std::map 中找到 min/max?

How to find min/max in std::map like in std::set?

因为 set 和 map 都是有序容器,是否可以像 std::set 那样在 0(1) 时间内为 std::map 找到最小值和最大值?

// for std::set
// std::set<int> s;
auto min = *s.begin();

auto max = *s.rbegin();

如何从 std::map 中获取 O(1) 中的最大值和最小值?这里的其他问题似乎建议遍历地图,但我们不能使用 std::map 的有序属性来更快地获得结果吗?

首先从键的迭代器中取消引用,如下所示:

// for std::map<int,string> s
auto minKey = s.begin()->first;
auto maxKey = s.rbegin()->first;

这仅适用于键,不适用于值,因为映射仅根据键排序。