Mengapa melakukan penjumlahan ke depan ketika Anda bisa melakukannya mundur ? Diberikan:
std::vector<int> v; // vector to be summed
int sum_of_elements(0); // result of the summation
Kita bisa menggunakan subskrip, menghitung mundur:
for (int i(v.size()); i > 0; --i)
sum_of_elements += v[i-1];
Kita dapat menggunakan "subskrip," yang dicentang jangkauan, menghitung mundur (untuk berjaga-jaga):
for (int i(v.size()); i > 0; --i)
sum_of_elements += v.at(i-1);
Kita dapat menggunakan iterator terbalik dalam for loop:
for(std::vector<int>::const_reverse_iterator i(v.rbegin()); i != v.rend(); ++i)
sum_of_elements += *i;
Kita bisa menggunakan forward iterator, iterasi mundur, dalam for loop (oooh, tricky!):
for(std::vector<int>::const_iterator i(v.end()); i != v.begin(); --i)
sum_of_elements += *(i - 1);
Kita dapat menggunakan accumulate
dengan iterator terbalik:
sum_of_elems = std::accumulate(v.rbegin(), v.rend(), 0);
Kita dapat menggunakan for_each
dengan ekspresi lambda menggunakan iterator terbalik:
std::for_each(v.rbegin(), v.rend(), [&](int n) { sum_of_elements += n; });
Jadi, seperti yang Anda lihat, ada banyak cara untuk menjumlahkan vektor ke belakang sama halnya dengan menjumlahkan vektor ke depan, dan beberapa di antaranya jauh lebih menarik dan menawarkan peluang yang jauh lebih besar untuk kesalahan satu per satu.