由于 set 和 map 都是有序容器,所以 std::map 是否可以像 std::set 一样在 O(1) 时间内查找最小值和最大值?
// for std::set
// std::set<int> s;
auto min = *s.begin();
auto max = *s.rbegin();
如何在O(1)时间复杂度内从std::map中获取最大值和最小值?其他问题似乎建议迭代地遍历Map,但是我们不能利用std::map的有序属性更快地得到结果吗?
由于 set 和 map 都是有序容器,所以 std::map 是否可以像 std::set 一样在 O(1) 时间内查找最小值和最大值?
// for std::set
// std::set<int> s;
auto min = *s.begin();
auto max = *s.rbegin();
如何在O(1)时间复杂度内从std::map中获取最大值和最小值?其他问题似乎建议迭代地遍历Map,但是我们不能利用std::map的有序属性更快地得到结果吗?
// for std::map<int,string> s
auto minKey = s.begin()->first;
auto maxKey = s.rbegin()->first;
这仅适用于键而非值,因为映射只在其键上排序。