Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การเดินทาง (Traverse) STL Set แบบย้อนกลับ (Reverse) ใน C++

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 << " ";