关于sort()

使用前提:
头文件 #include <algorithm>
1.基本的sort函数
sort(首地址,尾地址,排序规则(可省略,省略默认从小到大))
其中排序规则为一个函数,返回值为0或1(true或false)
eg:

bool cmp(int a,int b)
{
	return a > b;//从小到大
}
int a[] = {1,7,4,10,5};
sort(a,a+4,cmp);

2.结构体sort
eg:

struct node{
    int x,y;
}s[10];


bool cmp(node a,node b){
     return a.x>b.x;//自定义的排序规则
}
s[0].x=1;
s[0].y=7;
s[1].x=4;
s[1].y=5;
s[2].x=8;
s[2].y=3;

sort(s,s+3,cmp);

3.字符串sort
eg:

string str[3]={"aa","bb","cc"};
 sort(str,str+3);//按照字典序进行排序
 
 bool cmp(string a,string b)//按照字符串长度排序
 {
    return a.length()>b.length();
}

sort(str,str+3,cmp);

4.lower_bound()和upper_bound()

lower_bound()需要一个有序容器或者数组,其寻找[first,end)范围内第一个大于等于val的元素的位置,如果是数组就返回指针,如果是容器就返回迭代器。

upper_bound()需要一个有序容器或者数组,其寻找[first,end)范围内第一个大于val的元素的位置,如果是数组就返回指针,如果是容器就返回迭代器。

即:
lower_bound(起始地址,结束地址,val) ,返回的是数值第一个满足>= val 出现的位置。

upper_bound(起始地址,结束地址,val) , 返回的是数值第一个满足>val 的位置。

eg:

int a[]={2,3,5,8};
int *t1 = lower_bound(a,a+4,3);//结果为a[1](=3)的地址
int *t2 = upper_bound(a,a+4,3);//结果为a[2](=5)的地址
int it1=lower_bound(a,a+4,3)-a;//返回的结果是1(即为a[1],数组下标从0开始)
int it2=upper_bound(a,a+4,3)-a;//返回的结果是2(即为a[2],数组下标从0开始)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值