您的位置:首页 > 娱乐 > 明星 > 互联网营销培训班 考证_简历制作网站免费_seo外包优化_营销型网站的公司

互联网营销培训班 考证_简历制作网站免费_seo外包优化_营销型网站的公司

2024/12/22 0:02:33 来源:https://blog.csdn.net/hnjzsyjyj/article/details/143902071  浏览:    关键词:互联网营销培训班 考证_简历制作网站免费_seo外包优化_营销型网站的公司
互联网营销培训班 考证_简历制作网站免费_seo外包优化_营销型网站的公司

【知识点】
● 按结构体某一字段对结构体数组进行排序
https://blog.csdn.net/hnjzsyjyj/article/details/120184972
据此知识点,则可构建 pair 元素数组的自定义排序代码如下所示。

typedef pair<int,int> PII;int up(PII u,PII v) { //ascending by firstif(u.first==v.first) return u.second<v.second; //If equal,ascending by secondreturn u.first<v.first;
}int down(PII u,PII v) { //descending by firstif(u.first==v.first) return u.second>v.second; //If equal,descending by secondreturn u.first>v.first;
}

● 对元素为 pair 的数组的各元素进行排序的方法
方法一:构建一个包含 n 个 pair 元素的静态数组 v,然后调用 sort(v,v+n); 排序。此方法默认按 pair 数组元素的 first 域进行非递减排序。若 first 域相同,则按 pair 数组元素的 second 域进行非递减排序。

#include <bits/stdc++.h>
using namespace std;const int maxn=1e5+5;
typedef pair<int,int> PII;
PII v[maxn];int main() {int n;cin>>n;for(int i=0; i<n; i++) {cin>>v[i].first>>v[i].second;}sort(v,v+n);for(int i=0; i<n; i++) {cout<<v[i].first<<" "<<v[i].second<<endl;}return 0;
}/*
in:
5
5 8
3 1
2 9
1 6
5 3out:
1 6
2 9
3 1
5 3
5 8
*/

针对方法一,若拟按 pair 数组元素的 first 域进行非递增排序,且若 first 域相同,则按 pair 数组元素的 second 域进行非递增排序的代码如下所示。

#include <bits/stdc++.h>
using namespace std;const int maxn=1e5+5;
typedef pair<int,int> PII;
PII v[maxn];int up(PII u,PII v) { //ascending by firstif(u.first==v.first) return u.second<v.second; //If equal,ascending by secondreturn u.first<v.first;
}int down(PII u,PII v) { //descending by firstif(u.first==v.first) return u.second>v.second; //If equal,descending by secondreturn u.first>v.first;
}int main() {int n;cin>>n;for(int i=0; i<n; i++) {cin>>v[i].first>>v[i].second;}sort(v,v+n,down);for(int i=0; i<n; i++) {cout<<v[i].first<<" "<<v[i].second<<endl;}return 0;
}/*
in:
5
5 3
1 6
3 1
2 9
5 8out:
5 8
5 3
3 1
2 9
1 6
*/

方法二:构建一个包含 n 个 pair 元素的动态数组 v,然后调用 sort(v.begin(),v.end()); 排序。此方法默认按 pair 数组元素的 first 域进行非递减排序。若 first 域相同,则按 pair 数组元素的 second 域进行非递减排序。

#include <bits/stdc++.h>
using namespace std;const int maxn=1e5+5;
typedef pair<int,int> PII;
vector<PII> v;int main() {int n;cin>>n;for(int i=0; i<n; i++) {int x,y;cin>>x>>y;v.push_back({x,y});}sort(v.begin(),v.end());for(int i=0; i<n; i++) {cout<<v[i].first<<" "<<v[i].second<<endl;}return 0;
}/*
in:
5
5 8
3 1
2 9
1 6
5 3out:
1 6
2 9
3 1
5 3
5 8
*/

针对方法二,若拟按 pair 数组元素的 first 域进行非递增排序,且若 first 域相同,则按 pair 数组元素的 second 域进行非递增排序的代码如下所示。

#include <bits/stdc++.h>
using namespace std;const int maxn=1e5+5;
typedef pair<int,int> PII;
vector<PII> v;int up(PII u,PII v) { //ascending by firstif(u.first==v.first) return u.second<v.second; //If equal,ascending by secondreturn u.first<v.first;
}int down(PII u,PII v) { //descending by firstif(u.first==v.first) return u.second>v.second; //If equal,descending by secondreturn u.first>v.first;
}int main() {int n;cin>>n;for(int i=0; i<n; i++) {int x,y;cin>>x>>y;v.push_back({x,y});}sort(v.begin(),v.end(),down);for(int i=0; i<n; i++) {cout<<v[i].first<<" "<<v[i].second<<endl;}return 0;
}/*
in:
5
5 3
1 6
3 1
2 9
5 8out:
5 8
5 3
3 1
2 9
1 6
*/


【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/143719009
https://blog.csdn.net/hnjzsyjyj/article/details/143686676
https://blog.csdn.net/hnjzsyjyj/article/details/143720177
https://blog.csdn.net/qq_40618919/article/details/124388676
https://blog.csdn.net/yzu_120702117/article/details/29249527



 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com