>백엔드 개발 >C++ >C 벡터의 요소를 효율적으로 합산하려면 어떻게 해야 합니까?

C 벡터의 요소를 효율적으로 합산하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-24 09:15:14914검색

How Can I Efficiently Sum the Elements of a C   Vector?

C 벡터의 요소 합 결정

C에서 std::Vector의 요소 합을 구하려면 루프가 필요합니다. 또는 값을 반복하고 누적하는 표준 알고리즘입니다. 방법의 선택은 사용되는 C 버전에 따라 다르며 각 접근 방식은 고유한 장점을 제공합니다.

C 03

  • Classic for 루프: 전통적인 for 루프를 사용하여 요소를 반복하고 누적 합계를 증가시킵니다. 변수.

    int sum_of_elems = 0;
    for (auto it = vector.begin(); it != vector.end(); ++it)
      sum_of_elems += *it;
  • 누적 알고리즘: 이 알고리즘은 헤더는 반복자 범위를 통과한 요소의 합을 누적합니다.

    #include <numeric>
    int sum_of_elems = std::accumulate(vector.begin(), vector.end(), 0);

C 11 이상

  • std::accumulate with auto-typing: 동일 std::accumulate 알고리즘을 약간 수정하여 벡터의 요소 유형을 기반으로 반환 유형을 자동으로 추론하는 데 사용할 수 있습니다.

    #include <numeric>
    decltype(vector)::value_type sum_of_elems = std::accumulate(vector.begin(), vector.end(), decltype(vector)::value_type(0));
  • std::for_each 루프: 이 루프 구문은 벡터의 각 요소에 람다 함수를 적용하여 해당 요소 내의 합계 변수를 업데이트합니다. 범위.

    std::for_each(vector.begin(), vector.end(), [&](int n) { sum_of_elems += n; });
  • 범위 기반 for 루프: 이 구문적 설탕 for 루프는 별도의 반복자 객체 없이 요소를 직접 반복합니다.

    for (auto& n : vector)
      sum_of_elems += n;

C 17 및 나중에

  • std::reduce 알고리즘: 이 알고리즘은 특정 이진 연산자를 사용하여 컬렉션의 요소를 단일 결과로 결합합니다. 이 경우 추가 . 결과 유형도 자동으로 추론합니다.

    #include <numeric>
    auto result = std::reduce(v.begin(), v.end());

위 내용은 C 벡터의 요소를 효율적으로 합산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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