STL set เก็บข้อมูลเรียงลำดับจากน้อยไปมาก การเดินทางแบบย้อนกลับใช้ reverse_iterator ร่วมกับ rbegin() และ rend()
ตัวอย่างโค้ด
#include <iostream>
#include <set>
using namespace std;
int main() {
int arr[] = {10, 15, 26, 30, 35, 40, 48, 87, 98};
set my_set(arr, arr + sizeof(arr) / sizeof(arr[0]));
cout << "Elements of Set in forward order: ";
for (auto it = my_set.begin(); it != my_set.end(); ++it)
cout << *it << " ";
cout << "\nElements of Set in reverse order: ";
for (auto rev_it = my_set.rbegin(); rev_it != my_set.rend(); ++rev_it)
cout << *rev_it << " ";
return 0;
}
ผลลัพธ์
Elements of Set in forward order: 10 15 26 30 35 40 48 87 98 Elements of Set in reverse order: 98 87 48 40 35 30 26 15 10
C++11 Range-based for loop (ย้อนกลับ)
C++11 ไม่มี range-based for แบบ reverse โดยตรง แต่สามารถทำได้ด้วย Boost หรือเขียนเอง:
// C++20 มี views::reverse
for (auto val : my_set | views::reverse)
cout << val << " ";