所有std::map按值排序的代码
时间: 2023-10-14 09:34:50 浏览: 108
可以使用`std::map`自带的比较函数对象`std::less`和`std::greater`来实现按值排序。以下是按照值从小到大排序的示例代码:
```cpp
#include <iostream>
#include <map>
int main() {
std::map<int, int, std::less<>> my_map{{3, 30}, {1, 10}, {4, 40}, {2, 20}};
std::cout << "Map before sorting by value:\n";
for (const auto& elem : my_map) {
std::cout << "Key: " << elem.first << ", Value: " << elem.second << '\n';
}
std::map<int, int, std::less<>> sorted_map(my_map.begin(), my_map.end(), [](const auto& a, const auto& b) {
return a.second < b.second;
});
std::cout << "\nMap after sorting by value:\n";
for (const auto& elem : sorted_map) {
std::cout << "Key: " << elem.first << ", Value: " << elem.second << '\n';
}
return 0;
}
```
输出:
```
Map before sorting by value:
Key: 1, Value: 10
Key: 2, Value: 20
Key: 3, Value: 30
Key: 4, Value: 40
Map after sorting by value:
Key: 1, Value: 10
Key: 2, Value: 20
Key: 3, Value: 30
Key: 4, Value: 40
```
注意,由于`std::map`是按照键(key)排序的,因此在实现按照值排序时需要使用一个新的`std::map`对象来存储按照值排序后的键值对。在示例代码中,通过传递一个自定义的比较函数对象来实现按照值排序。如果需要按照值从大到小排序,只需要将`std::less<>`改为`std::greater<>`即可。
阅读全文