합산을 뒤로 할 수 있는데 왜 합산을 수행 합니까? 주어진:
std::vector<int> v; // vector to be summed
int sum_of_elements(0); // result of the summation
우리는 첨자를 사용할 수 있습니다.
for (int i(v.size()); i > 0; --i)
sum_of_elements += v[i-1];
범위 검사 된 "첨자"를 사용할 수 있습니다.
for (int i(v.size()); i > 0; --i)
sum_of_elements += v.at(i-1);
for 루프에서 역 반복자를 사용할 수 있습니다.
for(std::vector<int>::const_reverse_iterator i(v.rbegin()); i != v.rend(); ++i)
sum_of_elements += *i;
for 루프에서 앞뒤로 반복하는 순방향 반복자를 사용할 수 있습니다 (oooh, 까다로운!) :
for(std::vector<int>::const_iterator i(v.end()); i != v.begin(); --i)
sum_of_elements += *(i - 1);
우리는 accumulate
역 반복자와 함께 사용할 수 있습니다 :
sum_of_elems = std::accumulate(v.rbegin(), v.rend(), 0);
for_each
역 반복자를 사용하여 람다 식과 함께 사용할 수 있습니다 .
std::for_each(v.rbegin(), v.rend(), [&](int n) { sum_of_elements += n; });
보시다시피, 벡터 순방향을 합산하는 것만 큼 벡터를 역방향으로 합산하는 방법은 여러 가지가 있으며, 이들 중 일부는 훨씬 더 흥미롭고 일대일 오류에 대한 훨씬 더 큰 기회를 제공합니다.