[Tutorial] Thư viện STL trong C++: Iterator

Giới thiệu Iterator:

Iterator được hiểu đơn giản là con trỏ dùng để truy xuất đến các container trong thư viện STL.
Ở bài viết bài, ta chỉ tập trung vào giới thiệu các khai báo iterator, còn các dùng cụ thể của nó còn phụ thuộc vào các container khác nhau, dó đó, ta sẽ tìm hiểu kĩ iterator qua các bài chuyên để về container .

Khai báo iterator:

Itertator có thể xem như có hai loại, một loại là iterator “thuận chiều” (iterator) và một loại iterator “ngược chiều” (reverse_iterator).

Iterator:

Ví dụ, khai báo iterator có tên là “it” dùng để truy xuất vector:

 Vector là một containter, chúng ta sẽ tìm hiểu vector trong bài kế tiếp.

Trong thực tế, iterator được dùng với các phương thức begin() và end() của các container.

Để lấy ví dụ, đầu tiên ta khai báo một vector rỗng  có tên là myVector và dùng vòng lặp khởi tạo vector này có 10 phần tử có giá trị từ 0 đến 9.

Sử dụng interator “it” vừa khai báo trỏ đến vị trí phần tử đầu tiên vector:

In kết quả và interator it đang trỏ đến:

Lưu ý: vì iterator là một con trỏ nên ta phải dùng toán tử “*” phái trước tên biến it đển truy xuất giá trị con trỏ đang trỏ đến.

Trỏ đến vị trí kết thúc của vector:

Lưu ý: vị trí kết thúc không phải không phải phần tử cuối cùng, mà là vị trí phần tử liền sau phần tử cuối cùng. Ví dụ, nếu vector có 10 phần tử được đánh số từ 0 đến 9 thì phần tử end() là phần tử có số thứ tự là 10.

Iterator end()

Để thử nghiệm, ta gán phần tử thứ 10 của vector có giá trị là 10:

In kết quả vị trí end() mà iterator đang trỏ đến:

Phía dưới là toàn bộ chương trình thử nghiệm iterator:

 Reverse Iterator:

Ví dụ, khai báo reverse iterator có tên là “rit” để truy xuất vector kiểu int.

Trỏ đến vị trí đầu tiên của vector theo chiều ngược:

Nếu khởi tạo tương tự một vector như ví dụ trên, ta có giá trị của rit đang trỏ đến là 9. Ta có thể in kết quả để kiểm tra:

Trỏ đến vị trí kết thúc của vector theo chiều ngược:

Lưu ý: rend() ở đây không phải phần tử đầu tiên của vector. Nếu phần tử đầu tiên của vector là phần tử thứ 0 thì rend() của vector là phần tử thứ -1.

reverse-iterator rend()

 

Ví dụ: Ta gán giá trị phần tử thứ -1 của vector là -1 và in ra kết quả kiểm tra:

 

Phía dưới là toàn bộ chương trình thử nghiệm reverse iterator:

 

Share
Share