由于设置和映射都是订购的容器,可以在0(1)的std :: map中找到最小和最大值,例如std :: set?
// 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;
这仅适用于键,而不是值,因为地图仅在其键上排序。