怎么找到unordered_map中的最大值和最小值
时间: 2024-12-15 14:21:08 浏览: 25
在C++标准库中的`std::unordered_map`是一个关联容器,它将键映射到值,不适合直接存储大量数值并查找最大值和最小值,因为它的设计是为了高效的查找而不是排序。如果你想在一个有序的数据集合如`std::map`或自定义容器上寻找最大值和最小值,你可以这样做:
对于`std::map`或类似实现了随机访问迭代器的容器,你可以使用内置的最大元素和最小元素函数,例如:
```cpp
std::pair<const KeyType, ValueType> max_pair = your_map.rbegin()->first; // 获取最后一个元素的键(最小键)
std::pair<const KeyType,ValueType> min_pair = your_map.begin()->first; // 获取第一个元素的键(最大键)
// 对于值,需要通过迭代器获取:
auto max_value = your_map.find(max_pair.first)->second;
auto min_value = your_map.find(min_pair.first)->second;
```
然而,对于`unordered_map`,由于其内部结构不是有序的,你需要遍历整个映射来找到最大和最小的键值对。这是一个示例:
```cpp
KeyType max_key = nullptr;
ValueType max_value = std::numeric_limits<ValueType>::min();
for (const auto& pair : your_unordered_map) {
if (max_value < pair.second) {
max_key = pair.first;
max_value = pair.second;
}
}
KeyType min_key = nullptr;
ValueType min_value = std::numeric_limits<ValueType>::max();
for (const auto& pair : your_unordered_map) {
if (min_value > pair.second) {
min_key = pair.first;
min_value = pair.second;
}
}
```
阅读全文