杂例(结构体内部排序,和另一种输入方式 sort函数结构体容器原则)

 注意:如果就是一个排序就不用 用 if    用一个会报错两个变量排序的的话再用if else 一个就会报错

#include<bits/stdc++.h>
using namespace std;
#define xiao chu \
ios::sync_with_stdio(false) \
cin.tie(0),cout.tie(0);
typedef long long ll;
const int N=1e5+10;
int n,ne[N],idx,dp[N],k;
struct node
{
    int a;
    int b;
    bool operator<(const node&A)const{//A因为在后面按这个来(bool operoter<(const node &A)const {}里边是排序规则;
        if(a!=A.a)
         return a>A.a;//在a!=A.a的情况下前面比后面大所以就是按达大到小
       else return b>A.b;//不相等的话看bb在前边前面的大
    }
}s[N];
int main()
{
    cin>>n;
 for(int i=0;i<n;i++)
 {
    int x,y;
   cin>>x>>y;
   s[i]={x,y};
   //结构体直接用一个大括号输入进去就可以了里边是包含的数
 }
    sort(s,s+n);//别忘了用sort排序一下
 for(int i=0;i<n;i++)
 {
    cout<<s[i].a<<" "<<s[i].b<<endl;
 }
 
}

结构体的特殊输入方式就是直接{}放置元素中间用,隔开

特殊排序方式就是:运用bool operoter(const node&A)const{}

容器别忘了用sort();数组用法

#include<bits/stdc++.h>
using namespace std;
#define xiao chu \
ios::sync_with_stdio(false) \
cin.tie(0),cout.tie(0);
typedef long long ll;
const int N=1e5+10;
int n,m,a[N],ne[N],idx,dp[N],k;
bool cmp(int x,int y)
{
 return abs(x)>abs(y);//return 规则abs就是绝对值的意思
}
int main()
{
 cin>>n;
 for(int i=0;i<n;i++)
 {
    int x;
    cin>>a[i];
 }
 
 sort(a,a+n,greater<int>());//第一个最大了降序排序
 sort(a,a+n,less<int>());//升序排序最后第一个是最小的别忘了less<int>()括号
//  sort(a,a+n,cmp);//按照规定的书序排序;
 for(int i=0;i<n;i++)
 {
    cout<<a[i]<<" ";
 }
 
}

容器用法:

#include<bits/stdc++.h>
using namespace std;
#define xiao chu \
ios::sync_with_stdio(false) \
cin.tie(0),cout.tie(0);
typedef long long ll;
const int N=1e5+10;
int n,m,a[N],ne[N],idx,dp[N],k;
bool cmp(int x,int y)
{
    return x<y;
}
int main()
{
 vector<int>q;
 int n;
 cin>>n;
 for(int i=0;i<n;i++)
 {
    int x;
    cin>>x;
    q.push_back(x);
 }
//  sort(q.begin(),q.end(),greater<int >());//第一个是p.begin(),再是最后一个。可以继续用greater<int >();
 sort(q.begin(),q.end(),cmp);//容器还可以继续使用bool cmp
for(int i=0;i<n;i++)
{
    cout<<q[i]<<endl;
}
 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值