কেন সমষ্টি ফরোয়ার্ড সঞ্চালন যখন আপনি এটা করতে পারেন পিছন ? প্রদত্ত:
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; });
সুতরাং, আপনি দেখতে পাচ্ছেন, ভেক্টরকে সামনের দিকে পিছনের দিকের সমান করার মতো অনেকগুলি উপায় রয়েছে যেমন ভেক্টর ফরোয়ার্ডের যোগফল রয়েছে, এবং এর মধ্যে কয়েকটি আরও উত্তেজনাপূর্ণ এবং অফ-বাই এক ত্রুটির জন্য আরও বেশি সুযোগের প্রস্তাব দেয়।