c++ 将map排序从大到小排序
时间: 2023-11-03 18:56:36 浏览: 114
要将map按照从大到小的顺序排序,你可以使用greater函数对象作为map的第三个参数,这将使map按照键的降序排列。下面是一个示例代码:
```cpp
#include <map>
#include <iostream>
using namespace std;
int main() {
map<int, string, greater<int>> myMap;
myMap[3] = "three";
myMap[1] = "one";
myMap[2] = "two";
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
cout << it->first << ": " << it->second << endl;
}
return 0;
}
```
这段代码将输出以下结果:
```
3: three
2: two
1: one
```
相关问题
c++ 将map排序
在C++中,可以使用sort函数对map进行排序。由于map是按照键(key)进行排序的,默认情况下是按照键的升序排列。如果想要按照值(value)进行排序,可以将map的键值对拷贝到vector容器中,然后使用自定义的排序规则对vector进行排序。以下是一个对map按照值排序的示例代码:
```cpp
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
bool cmp(const std::pair<std::string, int>& a, const std::pair<std::string, int>& b) {
return a.second > b.second;
}
int main() {
std::map<std::string, int> m;
m["asas"] = 18;
m["ioio"] = 90;
m["cj"] = 89;
std::vector<std::pair<std::string, int>> v(m.begin(), m.end());
std::sort(v.begin(), v.end(), cmp);
for (int i = 0; i < v.size(); i++) {
std::cout << v[i].first << " " << v[i].second << std::endl;
}
return 0;
}
```
这段代码首先定义了一个map对象m,然后将它的键值对拷贝到vector对象v中。接下来,通过sort函数对v进行排序,排序规则使用了自定义的cmp函数,该函数按照值的降序进行排序。最后,遍历排序后的v,输出排序结果。
c++直接对map按值的大小进行排序
C++中可以使用STL中的sort()函数对map按值的大小进行排序。但是需要将map先转化为vector,然后再对vector进行排序,最后再根据排序后的vector的键值对,重新构建一个新的map。
代码如下:
```cpp
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
// 自定义比较函数,用于排序
bool compare(pair<string, int> a, pair<string, int> b){
return a.second < b.second;
}
int main(){
map<string, int> m;
m["apple"] = 5;
m["banana"] = 1;
m["orange"] = 3;
m["pear"] = 2;
m["peach"] = 4;
// 将map转化为vector
vector<pair<string, int>> v(m.begin(), m.end());
// 对vector进行排序
sort(v.begin(), v.end(), compare);
// 构建新的排序后的map
map<string, int> sortedM;
for(auto it = v.begin(); it != v.end(); it++){
sortedM[it->first] = it->second;
}
// 输出排序后的map
for(auto it = sortedM.begin(); it != sortedM.end(); it++){
cout<<it->first<<" "<<it->second<<endl;
}
return 0;
}
```
输出结果:
```
banana 1
pear 2
orange 3
peach 4
apple 5
```