我是靠谱客的博主 拼搏冬瓜,最近开发中收集的这篇文章主要介绍【c++】排序sort总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

STL set(允许重复),mulityset(去重)(也可用于字符串的字典序排序)

set<int> s;
s.clear();
s.insert(n);'''输入数字'''
s.delete();
set<int>::iterrator it;'''遍历输出'''
for(it=s.begin();it=s.end();it++)
cout<<*it<<endl;

STL map<key , value>

struct cmp{
bool operator() (const pair<int,int> &p1,const pair<int,int> &p2){
return p1.second > p2.second;
}
};
class Solution {
public:
// static bool cmp(const pair<int,int> &p1,const pair<int,int> &p2){

//
return p1.second > p2.second;
// }
void majorityElement(vector<int>& nums) {
vector<pair<int,int> > arr;
map<int,int> mp;
for(int i = 0;i < nums.size();i++){
mp.insert(make_pair(nums[i], 0));
}
for(int i = 0;i < nums.size();i++){
mp[nums[i]] += 1;
}
for (map<int,int>::iterator it=mp.begin();it!=mp.end();++it){
arr.push_back(make_pair(it->first,it->second));
}
// 两种排序方式
sort(arr.begin(),arr.end(),cmp()); // 基于结构体重载运算符
// sort(arr.begin(),arr.end(),cmp);
// 基于比较函数重载,静态函数
int t = 0;
for (vector<pair<int,int> >::iterator it=arr.begin();it!=arr.end();++it) {
cout<<it->first<<" "<<it->second<<"n";
}
}
};
int main(){
Solution s;
vector<int> v = {1,2,3,4,3,2,1,2,1,1};
s.majorityElement(v);
}

STL vector<vector <int > >

static bool cmp(const vector<int>&a,const vector<int>&b )
{
if(a[0]==b[0])
return a[1]>b[1];
return a[0]<b[0];
}
int main(){
vector<vector<int>> res;
'''结构为[[1,2],[2,3],[4,5],[2,4]]'''
int count=0;
sort(res.begin(),res.end(),cmp);
'''排序结果为[[1,2],[2,3],[2,4],[4,5]]'''
}

结构体排序

c++内置sort函数,必须要加#include<algorithm>头文件。
sort(参数1,参数2,参数3);

在sort函数中,参数1为排序数组起点,参数2为排序数组终点,是从A到A+n(n为长度),参数3代表排序规则。参数3省略后代表默认升序,若是自己写的cmp函数,即可按照cmp中的规定进行排序。

struct A{
int id;
int age;
bool operator < (const A &a) const{'''重新定义< 或者 >'''
if(a.id == b.id)
return a.age < b.age;
else
return a.id < b.id;
}
};
bool cmp(A a, A b){'''自己添加compare规则'''
if(a.id == b.id)
return a.age < b.age;
else
return a.id < b.id;
}
int main(){
A a[101];
int n,id,age;
while(cin>>n){
for(int i = 0;i<n;i++){
cin>>id>>age;
a[i].id = id;
a[i].age = age;
}
sort(a,a+n,cmp);
for(int i = 0;i<n;i++)
cout<<a[i].id<<" "<<a[i].age<<endl;
}
}

最后

以上就是拼搏冬瓜为你收集整理的【c++】排序sort总结的全部内容,希望文章能够帮你解决【c++】排序sort总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部