c++ map 排序
时间: 2023-08-05 09:04:37 浏览: 160
C++98 STL的map 如何避免自动排序.md
你可以使用C++的`map`容器和自定义比较函数来实现排序。`map`本身是按照键(key)的升序进行排序的,但如果你想按照其他方式排序,可以使用自定义比较函数。
下面是一个示例代码,展示如何对`map`进行排序:
```cpp
#include <iostream>
#include <map>
#include <algorithm>
// 自定义比较函数,按照值(value)进行降序排序
bool compareByValue(const std::pair<int, int>& a, const std::pair<int, int>& b) {
return a.second > b.second;
}
int main() {
std::map<int, int> myMap;
// 添加一些键值对
myMap[1] = 5;
myMap[2] = 3;
myMap[3] = 8;
myMap[4] = 1;
// 将map转换为vector,以便排序
std::vector<std::pair<int, int>> vec(myMap.begin(), myMap.end());
// 使用自定义比较函数对vector进行排序
std::sort(vec.begin(), vec.end(), compareByValue);
// 输出排序后的结果
for(const auto& pair : vec) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
```
在这个示例中,我们定义了一个自定义的比较函数`compareByValue`,根据键值对的值进行降序排序。然后,我们将`map`转换为一个`vector`,并使用`std::sort`函数对`vector`进行排序。最后,我们按照排序后的顺序输出键值对。
请注意,`map`是一个关联容器,其元素是按照键的顺序存储的,因此如果你只需要按照键进行排序,无需使用自定义比较函数。
阅读全文