STL-map按照value排序
时间: 2023-07-29 13:05:46 浏览: 115
STL自定义排序准则
在STL中,map是按照key的大小进行排序的。如果你需要按照value排序,可以使用以下步骤:
1. 将map转换为vector,其中每个元素是一个pair<key, value>。
2. 定义一个比较函数,该函数比较两个pair的value,并返回bool类型的值。
3. 使用STL的sort函数对vector进行排序,并传递比较函数作为参数。
4. 将排序后的vector转换回map。
下面是一个示例代码:
```c++
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
bool sortByValue(const pair<int, int>& a, const pair<int, int>& b) {
return a.second < b.second;
}
int main() {
map<int, int> myMap {{1, 5}, {2, 3}, {3, 8}, {4, 1}};
vector<pair<int, int>> vec(myMap.begin(), myMap.end());
sort(vec.begin(), vec.end(), sortByValue);
map<int, int> sortedMap(vec.begin(), vec.end());
for(auto elem : sortedMap) {
cout << elem.first << " " << elem.second << endl;
}
return 0;
}
```
阅读全文