C++中sort函数的用法

STL中自带了sort函数用来对给定区间的所有元素进行排序.

default (1)	//第一种用法,两个元素

template <class RandomAccessIterator>
  void sort (RandomAccessIterator first, RandomAccessIterator last);

custom (2)	//第二中用法,三个元素

template <class RandomAccessIterator, class Compare>
  void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

下面对这三个参数进行说明:

first,last

随机访问迭代器到要排序的序列的初始和最终位置。访问的范围是[first,last),它包含first和last之间的所有元素,包括first指向的元素,但不包括last指向的元素comp

comp

二进制函数,接受范围中的两个元素作为参数,并返回可转换为bool的值。

需要注意的是,使用sort函数之后,容器内原来元素的顺序就被打乱了。

下面是例子

#include <iostream>
#include <vector>
#include <functional>
#include <algorithm>

using namespace std;

bool comp(int a, int b)
{
	return(a > b);
}
int main()
{
	double a[] = { 11,21,32,21,43,54,3,43,4545,66 };
	vector<double>num (a, a + 10);
	sort(num.begin(), num.end());
	for (auto it = num.begin(); it != num.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
	//sort(num.begin(), num.end(), greater<double>());
	sort(num.begin(), num.end(), comp);
	for (auto it = num.begin(); it != num.end(); it++)
	{
		cout << *it << " ";
	}
	return 0;
}

对于第二种方法,参数的确定有2中方法,一种是自己写一个比较大小的函数,第二种方法就是调用c++自带的。在头文件functional里面,

functional提供了一堆基于模板的比较函数对象。它们是(看名字就知道意思了):equal_to<Type>、not_equal_to<Type>、greater<Type>、greater_equal<Type>、less<Type>、less_equal<Type>。对于这个问题来说,greater和less就足够了,直接拿过来用:

  • 升序:sort(begin,end,less<data-type>());
  • 降序:sort(begin,end,greater<data-type>())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值