c++map使用sort排序
时间: 2024-04-01 13:28:51 浏览: 121
C++中STL使用总结
在C++中,std::map是一个关联容器,它存储了一组键值对,并按照键的顺序进行排序。然而,map本身并没有提供直接的排序功能。如果你想对map按照值或者键进行排序,可以将map中的键值对复制到一个vector中,然后使用std::sort函数对vector进行排序。
下面是一个示例代码,演示了如何使用std::map和std::sort对map进行排序:
```cpp
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
int main() {
std::map<int, std::string> myMap;
myMap[1] = "apple";
myMap[3] = "banana";
myMap[2] = "orange";
// 将map中的键值对复制到vector中
std::vector<std::pair<int, std::string>> vec(myMap.begin(), myMap.end());
// 使用lambda表达式作为比较函数,按照键进行排序
std::sort(vec.begin(), vec.end(), [](const std::pair<int, std::string>& a, const std::pair<int, std::string>& b) {
return a.first < b.first;
});
// 输出排序后的结果
for (const auto& pair : vec) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
```
这段代码首先创建了一个std::map对象myMap,并插入了三个键值对。然后,通过将myMap的begin()和end()迭代器作为参数,将map中的键值对复制到了一个vector对象vec中。接下来,使用std::sort函数对vec进行排序,使用lambda表达式作为比较函数,按照键的大小进行排序。最后,通过遍历vec输出排序后的结果。
阅读全文