Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Iterator hai chiều (Bidirectional Iterators) trong C++

Chúng ta sẽ xem khái niệm iterator hai chiều (bidirectional iterators) trong C++.

  • Iterator hai chiều hỗ trợ tất cả tính năng của forward iterator, và thêm toán tử tiền tố và hậu tố giảm (--).
  • Loại iterator này truy cập phần tử theo cả hai hướng: về phía cuối và về phía đầu.
  • Random access iterator cũng là một loại bidirectional iterator.
  • Bidirectional iterator có tính năng của forward iterator, khác duy nhất là có thể giảm (decrement).
  • Bidirectional iterator có các thuộc tính sau:

    Thuộc tính Biểu thức
    Bidirectional iterator có thể khởi tạo mặc định, gán sao chép, và hủy A p
    A q(p)
    q = p
    Có thể so sánh bằng toán tử bằng và khác nhau p == q
    p != q
    Có thể giải tham chiếu. Dùng toán tử * để lấy giá trị. *p
    Iterator có thể thay đổi (mutable) có thể giải tham chiếu như lvalue *p = t
    Có thể tăng/giảm dùng toán tử ++ và -- p++
    q--

    Ví dụ Code

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

    Kết quả

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