Heim >Backend-Entwicklung >C++ >Anwendung von C++-Funktionsstandardparametern und Variablenparametern in Lambda-Ausdrücken

Anwendung von C++-Funktionsstandardparametern und Variablenparametern in Lambda-Ausdrücken

王林
王林Original
2024-04-22 15:06:02555Durchsuche

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.

C++ 函数默认参数和可变参数在 Lambda 表达式中的应用

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn