जब आप इसे पीछे की ओर कर सकते हैं तो आगे के लिए योग क्यों करें ? दिया हुआ:
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(std::vector<int>::const_reverse_iterator i(v.rbegin()); i != v.rend(); ++i)
sum_of_elements += *i;
हम आगे पुनरावृत्तियों का उपयोग कर सकते हैं, पीछे की ओर घूमते हुए, लूप (ऊह, मुश्किल!) के लिए।
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; });
तो, जैसा कि आप देख सकते हैं, वेक्टर पीछे की ओर योग करने के कई तरीके हैं जैसे कि वेक्टर आगे की ओर योग हैं, और इनमें से कुछ बहुत अधिक रोमांचक हैं और ऑफ-बाय-वन त्रुटियों के लिए अधिक से अधिक अवसर प्रदान करते हैं।