Iterator là object đóng vai trò con trỏ tổng quát để duyệt container — tách algorithm ra khỏi cấu trúc nội bộ của container.
5 loại cổ điển (từ ít đến nhiều khả năng):
| Loại | Đọc | Ghi | ++ | -- | [] | Ví dụ |
|---|---|---|---|---|---|---|
| Input | Có | Không | Có | Không | Không | istream_iterator |
| Output | Không | Có | Có | Không | Không | ostream_iterator |
| Forward | Có | Có | Có | Không | Không | forward_list |
| Bidirectional | Có | Có | Có | Có | Không | list, set, map |
| Random Access | Có | Có | Có | Có | Có | vector, deque, array |
Lưu ý: C++17 thêm Contiguous Iterator (đảm bảo vùng nhớ liên tục — vector, array, string) như một refinement của Random Access.
Range-based for (C++11) là syntactic sugar trên iterator — for (int x : v) tương đương dùng v.begin()/v.end() ngầm.