C++ 中的 map 容器是一个关联容器,它存储键值对,并根据键值排序。有时我们需要获取指向最大键值对的迭代器,也就是最大值迭代器。

我们可以使用以下两种方法获取最大值迭代器:

  1. 使用 rbegin() 函数:rbegin() 函数返回一个逆向迭代器,指向 map 容器的最后一个元素(即键值最大的元素)。可以通过调用逆向迭代器的 base() 函数来获取正向迭代器,即最大值迭代器。

  2. 使用 prev() 函数:prev() 函数返回一个指向当前迭代器前一个元素的迭代器。因此,我们可以使用 prev(myMap.end()) 获取指向最后一个元素(即最大值)的迭代器。

下面是一个示例代码:

std::map<int, std::string> myMap;
myMap[1] = 'one';
myMap[2] = 'two';
myMap[3] = 'three';

// 使用 rbegin() 函数获取最大值迭代器
auto maxIter = myMap.rbegin();
std::cout << maxIter->first << ' ' << maxIter->second << std::endl;

// 使用 prev() 函数获取最大值迭代器
auto maxIter2 = std::prev(myMap.end());
std::cout << maxIter2->first << ' ' << maxIter2->second << std::endl;

这段代码将输出以下结果:

3 three
3 three

需要注意的是,如果 map 容器为空,则 rbegin()prev(myMap.end()) 将返回一个指向 map 容器末尾的迭代器,即 myMap.end()

C++ map 容器:如何获取最大值迭代器

原文地址: https://www.cveoy.top/t/topic/orDA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录