ホームページ  >  記事  >  バックエンド開発  >  ラムダ式での C++ 関数のデフォルト パラメーターと変数パラメーターの適用

ラムダ式での C++ 関数のデフォルト パラメーターと変数パラメーターの適用

王林
王林オリジナル
2024-04-22 15:06:02463ブラウズ

ラムダ式では、デフォルト パラメータを使用するとデフォルトのパラメータ値を指定でき、変数パラメータを使用すると可変数のパラメータを渡すことができます。デフォルト パラメーターは必須パラメーターの後に続く必要がありますが、可変引数パラメーターは関数パラメーターの最後になければなりません。これらの機能により、コードが簡素化され、文字列のリストを操作するときに接頭辞や接尾辞が追加されるなど、読みやすさが向上します。

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

#C ラムダ式での関数のデフォルト パラメーターと変数パラメーターの適用

ラムダ式は匿名関数であり、関数は次のことを行うことができます。実行時に作成されます。デフォルトのパラメーターと可変引数パラメーターを使用して、ラムダ式の機能を強化できます。

デフォルト パラメータ

デフォルト パラメータを使用すると、ラムダ式のパラメータのデフォルト値を指定できます。呼び出し時にパラメータが指定されていない場合は、デフォルト値が使用されます。

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

可変パラメータ

可変パラメータを使用すると、可変数のパラメータをラムダ式に渡すことができます。変数パラメーターは関数パラメーターの最後のパラメーターである必要があり、

... で表されます。

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

実用的なケース

デフォルト パラメーターと変数パラメーターを使用して、コードを簡素化し、読みやすさを向上させることができます。たとえば、文字列のリストを処理する関数を考えてみましょう:

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

出力:

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

以上がラムダ式での C++ 関数のデフォルト パラメーターと変数パラメーターの適用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。