Lambda 表達式中的參數傳遞規則:By Value:以值傳遞,對原始值的修改不影響外部作用域。 By Reference:使用 [&] 或 [=] 擷取清單按引用傳遞參數,允許修改外部作用域。 By Move:對於可移動類型,使用 && 擷取清單以移動方式傳遞參數,優化效能。
C 函數參數詳解:lambda 表達式中參數傳遞的規則
Lambda 表達式
Lambda 表達式是一種簡潔且強大的匿名函數指標語法。在C 中,lambda 表達式的基本格式為:
[capture_list](parameters) -> return_type { body }
參數傳遞規則
當λ 表達式包含參數時,參數傳遞遵守以下規則:
[&]
或 [=]
擷取清單擷取參數的引用,可以按引用傳遞參數。 &&
擷取清單擷取參數的移動引用,可以按移動方式傳遞參數。 實戰案例
#考慮以下C 程式碼範例:
#include <iostream> #include <vector> int main() { // 创建一个 lambda 表达式,按值传递一个整型参数 auto sum = [](int x) { return x + 1; }; // 实例化一个 lambda 表达式,按引用传递参数 int value = 5; auto increment = [&value]() { value += 1; }; // 实例化一个 lambda 表达式,按移动传递 vector std::vector<int> vec = {1, 2, 3}; auto reverse = [vec = std::move(vec)]() { std::reverse(vec.begin(), vec.end()); }; std::cout << "By Value: " << sum(5) << std::endl; increment(); std::cout << "By Reference: " << value << std::endl; reverse(); std::cout << "By Move: "; for (auto elem : vec) { std::cout << elem << ' '; } std::cout << std::endl; return 0; }
輸出:
By Value: 6 By Reference: 6 By Move: 3 2 1
結論
理解Lambda 表達式中的參數傳遞規則對於有效使用它們至關重要。透過正確傳遞參數,你可以根據需要修改內部變數或最佳化效能。
以上是C++ 函式參數詳解:lambda表達式中參數傳遞的規則的詳細內容。更多資訊請關注PHP中文網其他相關文章!