3
A
回答
4
如果你熟悉當前的C++函子(即,實現operator()
使他們可以這樣調用的函數,但是有內部數據成員可以初始化類),那麼基本上lambda表達式對於該語言功能來說是一個很好的擴展,它使您能夠創建函子並在它們將被調用的位置初始化它們,而不必定義函子類。 Lambdas也非常靈活,因爲它們可以是閉包,允許您「捕獲」當前範圍內任何變量的值。
我覺得這是對的Visual C++團隊博客一個真正偉大的資源,通過大量的這些特點去: Lambdas, auto, and static_assert: C++0x Features in VC10, Part 1
希望這有助於
傑森
3
4
lambda表達式是用於指定一個函數對象的機制。 lambda的主要用途是指定由某個函數執行的簡單操作。例如:
vector<int> v = {50, -10, 20, -30};
std::sort(v.begin(), v.end()); // the default sort
// now v should be { -30, -10, 20, 50 }
// sort by absolute value:
std::sort(v.begin(), v.end(), [](int a, int b) { return abs(a)<abs(b); });
// now v should be { -10, 20, -30, 50 }
的參數[&](int a, int b) { return abs(a)<abs(b); }
是一個「拉姆達」(或「lambda函數」或「lambda表達式」),它指定了給定的兩個整型參數a和b的操作返回比較它們的絕對的結果值。
[&]是一個「捕獲列表」,指定使用的本地名稱將通過引用傳遞。我們可以說我們只想「捕捉」v,我們可以這麼說:[& v]。如果我們想通過價值傳遞v,我們可以這麼說:[= v]。不捕獲任何東西[],捕獲所有引用是[&],並通過值捕獲所有[=]。
2
也是另一個例子,如果你會喜歡:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
// Initialization C++0x-style
vector<int> voo = { 1, 2, 3, 4, 5 };
// Lambda is here
auto print = [&](int& i) { cout << i << endl; } ;
// Check that out, no loop !
for_each(voo.begin(), voo.end(), print);
return 0;
}
相關問題
- 1. C#Lambda表達式
- 2. lambda表達式c#
- 3. C#表達式Lambda
- 4. 與C++ 11 lambda表達式
- 5. C++ std :: find lambda表達式
- 6. C++ lambda表達式幫助
- 7. C#:與Lambda表達式
- 8. C#Lambda表達式和NHibernate
- 9. 創建C#lambda表達式
- 10. C++與lambda表達式
- 11. C#Lambda表達式到VB.Net
- 12. 在C++ lambda表達式
- 13. 瞭解C#Lambda表達式
- 14. vb.net vs C#lambda表達式
- 15. 使用C++ Lambda表達式
- 16. c中的lambda表達式#
- 17. C#lambda表達式和IComparer
- 18. C#Lambda表達式幫助
- 19. Lambda表達式
- 20. lambda表達式
- 21. Lambda表達式
- 22. Lambda表達式
- 23. Lambda表達式
- 24. Lambda表達式
- 25. Lambda表達式
- 26. Lambda表達式
- 27. Lambda表達式
- 28. Lambda表達式
- 29. lambda表達式
- 30. Lambda表達式()
你可以看看msdn文檔中的lambda表達式... http://msdn.microsoft。 COM/EN-US /庫/ dd293608.aspx – 2011-03-25 13:03:27