C++ Lambda 運算式:適用於特定場景的強大工具
簡介
Lambda表達式是C++ 中引入的一種匿名函數,可讓您建立簡短、內聯的函數物件。它們非常適合處理不需要聲明或單獨命名的簡單任務。
Lambda 語法
Lambda 表達式採用以下語法:
[capture-list](parameters) -> return-type { body }
用處
Lambda 表達式在以下場景中特別有用:
std::sort
和 std::find
。 實戰案例
1. 作為回呼函數
以下程式碼使用lambda 表達式將字串轉換為大寫:
#include <iostream> #include <string> using namespace std; int main() { string str = "hello"; transform(str.begin(), str.end(), str.begin(), [](char c) { return toupper(c); }); cout << str << endl; // 输出:HELLO return 0; }
2. 作為STL 演算法參數
以下程式碼使用lambda 表達式找出第一個大於5 的數字:
#include <iostream> #include <vector> using namespace std; int main() { vector<int> nums = {1, 3, 5, 7, 9}; auto it = find_if(nums.begin(), nums.end(), [](int n) { return n > 5; }); if (it != nums.end()) { cout << "找到了第一个大于 5 的数字:" << *it << endl; // 输出:7 } else { cout << "没有找到大于 5 的数字" << endl; } return 0; }
3. 作為閉包
以下程式碼示範如何使用lambda 表達式建立閉包:
#include <iostream> using namespace std; int main() { int x = 10; auto f = [x](int y) { return x + y; }; cout << f(5) << endl; // 输出:15 return 0; }
注意:與命名函數相比,Lambda 表達式有以下限制:
在使用 Lambda 表達式時,請謹慎權衡其優點和限制,以確定它們是否是特定場景的最佳選擇。
以上是C++ Lambda 表達式在哪些場景中特別有用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!