>백엔드 개발 >C++ >람다 표현식에 C++ 함수 기본 매개변수 및 변수 매개변수 적용

람다 표현식에 C++ 함수 기본 매개변수 및 변수 매개변수 적용

王林
王林원래의
2024-04-22 15:06:02520검색

람다 표현식에서 기본 매개변수를 사용하면 기본 매개변수 값을 지정할 수 있고, 가변 매개변수를 사용하면 가변 개수의 매개변수를 전달할 수 있습니다. 기본 매개변수는 필수 매개변수 뒤에 와야 하며, 가변 매개변수는 함수 매개변수 중 마지막에 와야 합니다. 이러한 기능은 문자열 목록 작업 시 접두사 및 접미사를 추가하는 등 코드를 단순화하고 가독성을 향상시킵니다.

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

Lambda 표현식에서 C++ 함수 기본 매개변수 및 변수 매개변수 적용

Lambda 표현식은 런타임 시 함수 생성을 허용하는 익명 함수입니다. 기본 매개변수와 가변 매개변수를 사용하여 Lambda 표현식의 기능을 향상할 수 있습니다.

기본 매개변수

기본 매개변수를 사용하면 람다 표현식의 매개변수에 대한 기본값을 지정할 수 있습니다. 호출 시 매개변수가 제공되지 않으면 기본값이 사용됩니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.