1. 程式人生 > >c++的sort函式用lamda表示式自定義排序

c++的sort函式用lamda表示式自定義排序

sort函式,可以自定義compare的方法或者過載>來完成自定義排序,而lamda表示式,也可以完成這個功能,測試程式碼如下:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

class A
{
public:
	A(int _a,int _b)
	{
		a=_a;
		b=_b;
	};
	int a;
	int b;
};
int main()
{
	vector<A> test;
	for(int i=0;i<10;i++)
	{
		A a(i,10-i);
		test.emplace_back(a);
	}
	sort(test.begin(),test.end(),[](A x,A y){return x.a>y.a;});
	for(int i=0;i<10;i++)
	{
		cout<<test[i].a<<endl;
	}
	return 1;
}
在sort函式的第三個引數中,[]表示需要作用域的哪些引數傳入,這裡為空,表示不需要傳入任何引數,常見的有=和&,(A x, A y)表示兩個入參,{}裡面表示執行的函式,這裡將返回值給省略了,根據return確定是bool型別的返回值。