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