#include <QCoreApplication>
#include <iostream>
#include <vector>
using namespace std;
bool cmp(int a, int b)
{
return a < b;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
vector<int> myvec{ 3, 2, 5, 7, 3, 2 };
vector<int> lbvec(myvec);
cout << "lbvec: \n";
for (int it : lbvec)
cout << it << ' ';
cout << endl;
sort(myvec.begin(), myvec.end(), cmp); // 舊式做法
cout << "predicate function:" << endl;
for (int it : myvec)
cout << it << ' ';
cout << endl;
sort(lbvec.begin(), lbvec.end(), [](int a, int b) -> bool { return a < b; }); // Lambda運算式
cout << "lambda expression:" << endl;
for (int it : lbvec)
cout << it << ' ';
return a.exec();
}
輸出結果為:
lbvec:
3 2 5 7 3 2
predicate function:
2 2 3 3 5 7
lambda expression:
很明顯沒有呼叫匿名函式啊!環境是ubuntu18.04 qtcreator4.11 g++ 9.3.0
知道原因的麻煩指點一下!
uj5u.com熱心網友回復:
[=] 試試uj5u.com熱心網友回復:
你的代碼可以,估計是qt啟動的原因把輸出屏蔽了uj5u.com熱心網友回復:
原來是a.exec()惹的禍!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/284216.html
標籤:C++ 語言
上一篇:求解,運算子優先級
下一篇:define 拼接問題