Trình lặp là một đối tượng giống như một con trỏ được sử dụng để lặp qua các phần tử của một vùng chứa. Ưu điểm chính của việc sử dụng trình lặp là tạo ra một giao diện chung và làm cho thuật toán không bị ảnh hưởng bởi loại vùng chứa được sử dụng để triển khai nó.
Trong thư viện chuẩn C ++ có Các loại trình vòng lặp -
- Chuyển tiếp trình lặp
- Trình lặp hai chiều
- Trình lặp đầu vào
- Trình lặp đầu ra
- Trình lặp Truy cập Ngẫu nhiên
Chương trình sẽ kiểm tra xem cấu trúc dữ liệu nào trong số các trình vòng lặp trên được sử dụng.
Có một số yếu tố có thể hữu ích để xác định loại trình lặp được sử dụng.
-
kiểu chữ , trả về thông tin nhận dạng kiểu trong thời gian chạy.
-
đặc điểm trình lặp , xác định các thuộc tính mà trình lặp sở hữu.
-
Danh mục trình lặp được sử dụng để xác định danh mục mà chúng xác định trình vòng lặp thuộc về.
Ví dụ
#include <bits/stdc++.h> using namespace std; template <class T> string iteratortype(T iterator){ if (typeid(typename iterator_traits<T>::iterator_category) == typeid(input_iterator_tag)) return "Input"; else if (typeid(typename iterator_traits<T>::iterator_category) == typeid(output_iterator_tag)) return "Output"; else if (typeid(typename iterator_traits<T>::iterator_category) == typeid(forward_iterator_tag)) return "Forward"; else if (typeid(typename iterator_traits<T>::iterator_category) == typeid(bidirectional_iterator_tag)) return "Bidirectional"; else if (typeid(typename iterator_traits<T>::iterator_category) == typeid(random_access_iterator_tag)) return "Random_Access"; return "Missing"; } int main(){ vector<int> vec; auto iter = vec.begin(); cout <<iteratortype(iter) << " Iterator\n"; return 0; }
Đầu ra
Random_Access Iterator