map根据value大小排序
时间: 2024-01-25 09:03:39 浏览: 75
Java Map 按照Value排序的实现方法
5星 · 资源好评率100%
在C++中,你可以使用STL库中的`std::map`和`std::multimap`来实现根据value大小排序的功能。
下面是一个示例代码:
```cpp
#include <iostream>
#include <map>
#include <algorithm>
int main()
{
std::map<std::string, int> myMap = {
{"apple", 5},
{"banana", 2},
{"orange", 3},
{"pear", 1},
{"peach", 4}
};
// 使用 lambda 表达式定义比较函数
auto cmp = [](const std::pair<std::string, int>& a, const std::pair<std::string, int>& b) {
return a.second < b.second;
};
// 定义 multimap,并将 map 中的元素插入到 multimap 中
std::multimap<std::string, int, decltype(cmp)> myMultimap(myMap.begin(), myMap.end(), cmp);
// 遍历 multimap 输出排序后的结果
for (auto iter = myMultimap.begin(); iter != myMultimap.end(); ++iter) {
std::cout << iter->first << " : " << iter->second << std::endl;
}
return 0;
}
```
这个示例中,先定义了一个`std::map`,其中包含了一些键值对。然后,定义了一个lambda表达式作为比较函数,用于比较`std::pair`类型的元素(其中`std::pair`的第一个元素是键,第二个元素是值)。接着,定义了一个`std::multimap`,并将`std::map`中的元素插入到`std::multimap`中,同时指定了比较函数。最后,遍历`std::multimap`,输出排序后的结果。
需要注意的是,如果有多个元素的value值相同,它们的顺序可能是不确定的。如果需要稳定排序,可以使用`std::stable_sort`函数对`std::vector`类型的元素进行排序,然后将排序后的元素插入到`std::multimap`中。
阅读全文