เหตุใดจึงต้องมีการรวมกันส่งต่อเมื่อคุณสามารถทำย้อนกลับได้ ? ได้รับ:
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;
เราสามารถใช้ตัววนซ้ำไปข้างหน้าวนซ้ำไปข้างหลังในวงวน (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; });
ดังที่คุณเห็นมีหลายวิธีในการหาผลรวมของเวกเตอร์ไปข้างหลังเหมือนกับที่จะรวมเวกเตอร์ไปข้างหน้าและสิ่งเหล่านี้น่าตื่นเต้นมากขึ้น