C++map对value进行排序
时间: 2023-08-01 18:15:39 浏览: 109
C++_中的map容器
在 C++ 中,std::map 是一个关联容器,它按照键值对进行存储,并且默认以键的升序进行排序。如果你想按照值进行排序,你可以将 map 的键值对存储到 std::vector 中,然后使用自定义的比较函数对 vector 进行排序。
下面是一个示例代码,展示如何对 map 的值进行排序:
```cpp
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
// 自定义比较函数,按照 map 的值进行排序
bool compare(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] = 10;
myMap[2] = 30;
myMap[3] = 20;
// 将 map 的键值对存储到 vector
std::vector<std::pair<int, int>> vec(myMap.begin(), myMap.end());
// 对 vector 进行排序
std::sort(vec.begin(), vec.end(), compare);
// 输出排序后的结果
for (const auto& pair : vec) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
```
在上面的示例中,我们定义了一个自定义的比较函数 `compare`,根据键值对的值进行排序。然后,我们将 map 的键值对存储到 vector 中,使用 `std::sort` 函数对 vector 进行排序,最后输出排序后的结果。
注意,由于 map 是按照键进行排序的,所以在存储到 vector 之前,键值对的顺序可能会发生改变。如果你想保持键值对的顺序,可以考虑使用 std::pair 的数组或 std::list 来替代 map。
阅读全文