由于set和map都是有序容器,因此std :: map中的min和max可以在0(1)时间内找到,就像std :: set一样?
// for std::set
// std::set<int> s;
auto min = *s.begin();
auto max = *s.rbegin();
如何从std :: map中获取O(1)中的max和min?这里的其他问题似乎建议迭代遍历地图,但我们不能使用std :: map的有序rightlt来更快地获得结果吗?
答案 0 :(得分:6)
首先从密钥的迭代器中取消引用,如下所示:
// for std::map<int,string> s
auto minKey = s.begin()->first;
auto maxKey = s.rbegin()->first;
这仅适用于键,而不适用于值,因为地图仅按其键排序。