C++ sort()排序函数用法详解

#include<algorithm>   sort()

1. 什么时候可以用sort()?

        (1)当你需要对array/vector/deque这三个STL容器或普通数组中指定范围内的元素进行排序时

        (2)对于指定范围内相同的元素 他们的相对位置可以发生改变

                (如果要求相同元素的相对位置不能发生改变,可以用stable_sort() )

2. sort()的2种用法

        (1) 对 [ first, last) 区域内的元素做默认的升序排序

                sort(RandomAccessIterator first, RandomAccessIterator last);

        (2) 按照指定的 comp 排序规则,对 [ first, last) 区域内的元素进行排序

                sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp);

其中,first 和 last 都为随机访问迭代器, 用来指定要排序的目标区域;另外在第 2 种格式中,comp 可以是 C++ STL 标准库提供的排序规则(比如 std::greater<T>从大到小排序),也可以是自定义的排序规则。

3. 针对不同数据类型分别进行说明

        (1)int / double / string 等(以int为例)

                vector<int> v;

                int  arr[N];

                从小到大排序:

                        sort(v.begin() , v.end());

                        sort(arr , arr + length);

                从大到小排序:

                        sort(v.begin() , v.begin() + 4 , std::greater<int>());

                        sort(arr , arr + 4 , std::greater<int>());

        (2)结构体

                C++中,结构体是无法进行==,>,<,>=,<=,!=操作的,如果要使用这些操作符对结构体进行操作,有多种方式可以实现,这里我只介绍一种

                以普通函数的形式实现自定义排序规则:

#include<iostream>
#include<algorithm>
using namespace std;
typedef struct tt{
	int age;
	string name;
}T;

//从小到大排序
bool mycomp1(T& a,T& b){
	return a.age < b.age;
}

//从大到小排序
bool mycomp2(T& a,T& b){
	return a.age > b.age;
}

int main(){
	T arr[] = {{3,"a"},{4,"b"},{2,"c"},{1,"d"},{7,"e"},{5,"f"}};
	sort(arr,arr+6,mycomp1);  //7 5 4 3 2 1
    sort(arr,arr+6,mycomp2);  //1 2 3 4 5 7
	for(int i=0;i<6;i++){
		cout << arr[i].age << " ";
	}
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值