>백엔드 개발 >C++ >C에서 std::Vector의 요소를 합산하는 효율적인 방법은 무엇입니까?

C에서 std::Vector의 요소를 합산하는 효율적인 방법은 무엇입니까?

DDD
DDD원래의
2024-12-03 16:45:13622검색

What are the Efficient Ways to Sum the Elements of a std::vector in C  ?

std::Vector의 요소를 합산하는 효율적인 방법

std 내 요소의 누적 합계를 확인해야 하는 시나리오에서 ::벡터에는 여러 가지 효율적인 접근 방식이 있습니다.

C 03 솔루션:

  1. 기본 For 루프:

    int sum_of_elems = 0;
    for (std::vector<int>::iterator it = vector.begin(); it != vector.end(); ++it)
        sum_of_elems += *it;
  2. 표준 알고리즘:

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

    참고: 마지막 인수 유형에 따라 초기 값과 결과 유형이 결정됩니다. 부동 소수점 입력의 경우 0 대신 0.0을 사용하세요.

C 11 이상 확장:

  1. 자동 벡터 유형 처리:

    #include <numeric>
    
    sum_of_elems = std::accumulate(vector.begin(), vector.end(),
                                   decltype(vector)::value_type(0));
  2. std::for_each 활용:

    std::for_each(vector.begin(), vector.end(), [&](int n) {
        sum_of_elems += n;
    });
  3. 범위 기반 루프:

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

C 17 이상 추가:

  1. std:: 자동 결과로 감소 유형:

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

    이 함수의 오버로드는 광범위한 컬렉션에 대한 병렬 처리를 가능하게 합니다.

위 내용은 C에서 std::Vector의 요소를 합산하는 효율적인 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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