(map&C++)(五、排序)sort
2023-09-27 14:26:27 时间
注意:map本身是按照key值进行升序排序,如果升序不必管理
因为sort函数对有序函数进行排序,所以需要和vector配合使用
1.对key进行降序处理
#include <bits/stdc++.h>
using namespace std;
typedef pair<string, string> PAIR;
bool cmp(const PAIR &left,const PAIR &right){
return left.first > right.first;
}
int main(){
map<string ,string> m;
m["abc"] = "456";m["def"]="789";m["ghi"]="123";
vector<PAIR> vec(m.begin(),m.end());
for(map<string,string>::iterator it = m.begin(); it != m.end(); it++){
cout<<it->first<<"->"<<it->second<<endl;
}
cout << "----------(原本升序)华丽的分割线(排序后如下)------------" << endl;
sort(vec.begin(),vec.end(),cmp);
for(int i = 0; i < vec.size(); i++){
cout << vec[i].first << "->" << vec[i].second << endl;
}
return 0;
}
结果:
2.对value进行排序
#include <bits/stdc++.h>
using namespace std;
typedef pair<string, string> PAIR;
bool cmp(const PAIR &left,const PAIR &right){
return left.second < right.second;
}
int main(){
map<string ,string> m;
m["abc"] = "456";m["def"]="789";m["ghi"]="123";
vector<PAIR> vec(m.begin(),m.end());
for(map<string,string>::iterator it = m.begin(); it != m.end(); it++){
cout<<it->first<<"->"<<it->second<<endl;
}
cout << "----------(原本key升序)华丽的分割线(排序后value升序)------------" << endl;
sort(vec.begin(),vec.end(),cmp);
for(int i = 0; i < vec.size(); i++){
cout << vec[i].first << "->" << vec[i].second << endl;
}
return 0;
}
结果:
3.对value进行降序就不写了(同2)
相关文章
- 【ARM-Linux开发】Linux环境下使用eclipse开发C++动态链接库程序
- 【C++】编程、基础知识
- C++-容器-string:查找子字符串在原字符串中的下标【int idx = a.find(b)】
- C/C++:函数参数传递的三种情况【传值(a):不能改变实参】【传地址(*a)(本质还是传值):可改变实参】、【传引用(&a):可改变实参】
- [c++] Thread Pool
- [TF] TensorFlow & TFLite - C++ API
- PHP 不如 C++ 吗?
- [C++]2-6 排列
- C++中引用符号(&)的用法
- C++中&的功能 及 用法
- c++构造函数详解
- (map&C++)(一、创建与遍历)
- (string&C++)(五、截取)substr的使用
- Visual C++中去除警告
- Asyn端口驱动程序的C++基类asynPortDriver
- 【数据结构&&等差数列】KMP简介和算法的实现(c++ && java)
- 算法-最长子序列和C/C++实现(三个复杂度)
- VC++程序调试
- C++里大写TRUE和小写true区别
- C++资源之不完全导引
- Linux环境下使用eclipse开发C++动态链接库程序
- C&C++图形图像处理开源库