Maison  >  Article  >  développement back-end  >  Application des paramètres par défaut des fonctions C++ et des paramètres variables dans les expressions Lambda

Application des paramètres par défaut des fonctions C++ et des paramètres variables dans les expressions Lambda

王林
王林original
2024-04-22 15:06:02508parcourir

Dans les expressions Lambda, les paramètres par défaut vous permettent de spécifier les valeurs des paramètres par défaut, tandis que les paramètres variables vous permettent de transmettre un nombre variable de paramètres. Les paramètres par défaut doivent suivre les paramètres requis, tandis que les paramètres variadiques doivent être les derniers paramètres de la fonction. Ces fonctionnalités simplifient le code et améliorent la lisibilité, comme l'ajout de préfixes et de suffixes lorsque vous travaillez avec des listes de chaînes.

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

Application des paramètres par défaut des fonctions C++ et des paramètres variables dans l'expression Lambda

L'expression Lambda est une fonction anonyme qui permet la création de fonctions au moment de l'exécution. Nous pouvons améliorer la fonctionnalité des expressions Lambda en utilisant des paramètres par défaut et des paramètres variadiques.

Paramètres par défaut

Les paramètres par défaut nous permettent de spécifier des valeurs par défaut pour les paramètres d'une expression Lambda. Si aucun paramètre n'est fourni lors de l'appel, les valeurs par défaut seront utilisées.

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;
}

Paramètres variables

Les paramètres variables nous permettent de transmettre un nombre variable de paramètres à une expression Lambda. Les paramètres variadiques doivent être le dernier paramètre des paramètres de la fonction et sont représentés par ....

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;
}

Cas pratique

Nous pouvons utiliser des paramètres par défaut et des paramètres variables pour simplifier le code et améliorer la lisibilité. Par exemple, considérons une fonction qui gère une liste de chaînes :

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;
}

Sortie :

Prefix: "Mr", Suffix: "."
Mr.John.
Mr.Mary.
Mr.Bob.
Prefix: empty, Suffix: "!"
John!
Mary!
Bob!
No prefix or suffix
John
Mary
Bob

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn