对map进行按照key的大小升序排序
时间: 2023-07-31 07:09:08 浏览: 92
可以使用STL中的`map`和`multimap`容器自带的排序功能来实现按照key的大小进行升序排序。
以`map`容器为例,可以使用`std::map`的默认排序方式来实现按照key的大小升序排序,因为`std::map`默认使用operator<来进行key的比较,而operator<会按照key的大小进行比较。
示例代码如下:
```c++
#include <map>
#include <iostream>
int main() {
std::map<int, int> my_map = {{3, 30}, {1, 10}, {4, 40}, {2, 20}};
std::cout << "Before sorting:" << std::endl;
for (auto& kv : my_map) {
std::cout << kv.first << ": " << kv.second << std::endl;
}
std::cout << "After sorting:" << std::endl;
for (auto& kv : my_map) {
std::cout << kv.first << ": " << kv.second << std::endl;
}
return 0;
}
```
输出结果如下:
```
Before sorting:
1: 10
2: 20
3: 30
4: 40
After sorting:
1: 10
2: 20
3: 30
4: 40
```
输出结果可以看到,`my_map`中的元素在输出时已经按照key的大小进行了升序排序。
如果要按照key的大小进行降序排序,可以使用`std::greater`来指定排序方式,示例代码如下:
```c++
#include <map>
#include <iostream>
int main() {
std::map<int, int, std::greater<int>> my_map = {{3, 30}, {1, 10}, {4, 40}, {2, 20}};
std::cout << "Before sorting:" << std::endl;
for (auto& kv : my_map) {
std::cout << kv.first << ": " << kv.second << std::endl;
}
std::cout << "After sorting:" << std::endl;
for (auto& kv : my_map) {
std::cout << kv.first << ": " << kv.second << std::endl;
}
return 0;
}
```
输出结果如下:
```
Before sorting:
4: 40
3: 30
2: 20
1: 10
After sorting:
4: 40
3: 30
2: 20
1: 10
```
输出结果可以看到,`my_map`中的元素在输出时已经按照key的大小进行了降序排序。
阅读全文