ラムダ式でのパラメーター受け渡しルール: 値による: 値によって渡され、元の値の変更は外部スコープには影響しません。参照渡し: [&] または [=] キャプチャ リストを使用してパラメータを参照渡しし、外側のスコープを変更できるようにします。 By Move: 可動タイプの場合、&& キャプチャ リストを使用して移動によってパラメータを渡し、パフォーマンスを最適化します。
#C 関数パラメータの詳細な説明: ラムダ式でパラメータを渡すためのルール
ラムダ式Lambda 式は、簡潔で強力な匿名関数ポインター構文です。 C では、ラムダ式の基本的な形式は次のとおりです。
[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
結論ラムダ式のパラメータ受け渡しルールを理解することは、ラムダ式を効果的に使用するために重要です。パラメーターを正しく渡すことで、必要に応じて内部変数を変更したり、パフォーマンスを最適化したりできます。
以上がC++ 関数パラメータの詳細な説明: ラムダ式で渡すパラメータのルールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。