记录greater和less

引言

本文针对C++11中greater和less做简单的记录。本文使用visual studio 2017下控制台输出程序可以直接使用c++11特性。

内部实现

查看greater和less会看到其下面的实现;

template<class _Ty = void>
	struct greater
	{	// functor for operator>
	_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type;
	_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type;
	_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type;

	constexpr bool operator()(const _Ty& _Left, const _Ty& _Right) const
		{	// apply operator> to operands
		return (_Left > _Right);
		}
	};

		// STRUCT TEMPLATE less
template<class _Ty = void>
	struct less
	{	// functor for operator<
	_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty first_argument_type;
	_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef _Ty second_argument_type;
	_CXX17_DEPRECATE_ADAPTOR_TYPEDEFS typedef bool result_type;

	constexpr bool operator()(const _Ty& _Left, const _Ty& _Right) const
		{	// apply operator< to operands
		return (_Left < _Right);
		}
	};

如何使用

结合上面的实现来看看如何使用greater和less。下面是使用过程中的一些记录。

#include 
#include 
#include //sort
using namespace std;

int main()
{
	int array[] = {2,4,1,78,55,34,8};
	int len = sizeof(array) / sizeof(int);
	sort(array,array+len,greater<int>());//从大到小排序
	for (auto i:array) 
	{
		cout << i << " ";
	}
	cout << endl;
	sort(array,array+len,less<int>());//从小到大排序
	for (int i:array) 
	{
		cout << i << " ";
	}
	cout << endl;
	return 0;
}

greater与less同为函数模板,上面是int类型的使用,下面看看char类型的使用,实质是一样的。

#include 
#include 
#include //sort
using namespace std;

int main()
{
	char array[] = {'g','e','s','a','v','f'};
	int len = sizeof(array) / sizeof(char);
	sort(array,array+len,greater<char>());
	for (auto i:array) 
	{
		cout << i << " ";
	}
	cout << endl;
	sort(array,array+len,less<char>());
	for (char i:array) 
	{
		cout << i << " ";
	}
	cout << endl;
	return 0;
}

当然除了上述的int,char类型还可以是string类型,下面是string类型下greater与less的使用。

#include 
#include 
#include //sort
#include //必须包含string头文件才可以进行相关的cout操作
using namespace std;

int main()
{
	string array[] = {"sdf","aww","sdfr","hellos","good","last"};
	/*const int len = 6;*/
	int len = sizeof(array) / sizeof(array[0]);
	sort(array,array+len,greater<string>());
	for (auto i:array) 
	{
		cout << i << " ";
	}
	cout << endl;
	sort(array,array+len,less<string>());
	for (string i:array) 
	{
		cout << i << " ";
	}
	cout << endl;
	return 0;
}

以上仅记录。

特别关注

平台类型 x64 x86
int 4 4
float 4 4
double 8 8
long long 8 8
string 40 28
void* 8 4

以上特别关注为vs2017上运行的结果。仅以记录。

你可能感兴趣的:(C++,less,c++,greater)