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

Bidirectional Iterators ใน C++

ที่นี่เราจะดูแนวคิด Bidirectional iterators ใน C++

  • Bidirectional iterators รองรับฟีเจอร์ของ forward iterators ทั้งหมด และรองรับ prefix/postfix decrement operators
  • Iterator ประเภทนี้เข้าถึงสมาชิกได้ทั้งสองทิศทาง: ไปข้างหน้าและถอยหลัง
  • Random access iterator ก็เป็นประเภทหนึ่งของ bidirectional iterator
  • Bidirectional iterators มีฟีเจอร์ของ forward iterator แตกต่างตรงที่ decrement ได้

คุณสมบัติของ Bidirectional iterators:

PropertyExpression
Default-constructible, copy-assignable, destructibleA p; A q(p); q = p;
เปรียบเทียบได้ด้วย equality/inequalityp == q; p != q;
Dereference ได้ ใช้ * เพื่อดึงค่า*p
Mutable iterator dereference เป็น lvalue ได้*p = t
Increment/decrement ด้วย ++ และ --p++; q--;

ตัวอย่างโค้ด

#include <iostream>
#include <iterator>
#include <vector>
using namespace std;

int main() {
    vector<int> vec{10,20,30,40,50,60,70,80,90,100};
    vector<int>::iterator it;
    vector<int>::reverse_iterator rev_it;
    for (it = vec.begin(); it != vec.end(); it++)
        cout << *it << " ";
    cout << endl;
    for (rev_it = vec.rbegin(); rev_it != vec.rend(); rev_it++)
        cout << *rev_it << " ";
}

ผลลัพธ์

10 20 30 40 50 60 70 80 90 100
100 90 80 70 60 50 40 30 20 10