Heim > Artikel > Backend-Entwicklung > Anwendung von C++-Funktionsstandardparametern und Variablenparametern in Lambda-Ausdrücken
In Lambda-Ausdrücken ermöglichen Ihnen Standardparameter die Angabe von Standardparameterwerten, während Sie mit variablen Parametern eine unbegrenzte Anzahl von Parametern übergeben können. Standardparameter sollten den erforderlichen Parametern folgen, während variadische Parameter der letzte Funktionsparameter sein müssen. Diese Funktionen vereinfachen den Code und verbessern die Lesbarkeit, z. B. das Hinzufügen von Präfixen und Suffixen beim Arbeiten mit Zeichenfolgenlisten.
Anwendung von C++-Funktionsstandardparametern und Variablenparametern im Lambda-Ausdruck
Lambda-Ausdruck ist eine anonyme Funktion, die die Erstellung von Funktionen zur Laufzeit ermöglicht. Wir können die Funktionalität von Lambda-Ausdrücken mithilfe von Standardparametern und variadischen Parametern verbessern.
Standardparameter
Standardparameter ermöglichen es uns, Standardwerte für die Parameter eines Lambda-Ausdrucks anzugeben. Wenn beim Aufruf keine Parameter angegeben werden, werden Standardwerte verwendet.
int add(int a, int b = 10) { return a + b; } int main() { auto sum = [](int a, int b) { return a + b; }; // 无默认参数 auto sumWithDefaultValue = [](int a, int b = 10) { return a + b; }; // 有默认参数 cout << sum(5, 6) << endl; // 输出: 11 cout << sumWithDefaultValue(5) << endl; // 输出: 15 return 0; }
Variadische Parameter
Variable Parameter ermöglichen es uns, eine variable Anzahl von Parametern an einen Lambda-Ausdruck zu übergeben. Die Varargs müssen der letzte Parameter in den Funktionsparametern sein und werden durch ...
dargestellt.
int sumAll(int n, ...) { va_list args; va_start(args, n); int sum = n; for (int i = 0; i < n; i++) { sum += va_arg(args, int); } va_end(args); return sum; } int main() { auto sumAllLambda = [](int n, ...) { va_list args; va_start(args, n); int sum = n; for (int i = 0; i < n; i++) { sum += va_arg(args, int); } va_end(args); return sum; }; cout << sumAll(3, 1, 2, 3) << endl; // 输出: 9 cout << sumAllLambda(4, 4, 5, 6, 7) << endl; // 输出: 22 return 0; }
Praktischer Fall
Wir können Standardparameter und variable Parameter verwenden, um den Code zu vereinfachen und die Lesbarkeit zu verbessern. Stellen Sie sich beispielsweise eine Funktion vor, die eine Liste von Zeichenfolgen verarbeitet:
void processStrings(const vector<string>& strings, string defaultPrefix = "", string defaultSuffix = "") { for (const auto& str : strings) { cout << defaultPrefix << str << defaultSuffix << endl; } } int main() { vector<string> names = {"John", "Mary", "Bob"}; cout << "Prefix: \"Mr\", Suffix: \".\"" << endl; processStrings(names, "Mr", "."); // 使用默认参数 cout << "Prefix: empty, Suffix: \"!\"" << endl; processStrings(names, "", "!"); // 只使用可变参数 cout << "No prefix or suffix" << endl; processStrings(names); // 使用所有默认值 return 0; }
Ausgabe:
Prefix: "Mr", Suffix: "." Mr.John. Mr.Mary. Mr.Bob. Prefix: empty, Suffix: "!" John! Mary! Bob! No prefix or suffix John Mary Bob
Das obige ist der detaillierte Inhalt vonAnwendung von C++-Funktionsstandardparametern und Variablenparametern in Lambda-Ausdrücken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!