c++的sort函式用lamda表示式自定義排序
阿新 • • 發佈:2019-01-31
sort函式,可以自定義compare的方法或者過載>來完成自定義排序,而lamda表示式,也可以完成這個功能,測試程式碼如下:
在sort函式的第三個引數中,[]表示需要作用域的哪些引數傳入,這裡為空,表示不需要傳入任何引數,常見的有=和&,(A x, A y)表示兩個入參,{}裡面表示執行的函式,這裡將返回值給省略了,根據return確定是bool型別的返回值。#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; }