Trình vòng lặp thực hiện có thể vô cùng hữu ích và tôi đã làm như vậy khá thường xuyên. Trình lặp là một khái niệm đơn giản mà mọi người đều biết cách sử dụng. Iterator cho phép bạn sử dụng các thuật toán STL.
Thông thường, bạn có thể thực hiện lặp để đơn giản hóa việc sử dụng các API hệ điều hành thường được sử dụng như Windows' FindNextFile
Khi bạn viết một file_iterator (đã tồn tại trong tăng), bạn đột nhiên có thể làm:
file_iterator itBegin; // initialize appropriately
file_iterator itEnd;
std::vector<HANDLE> vecFiles(itBegin, itEnd);
để có danh sách xử lý cho tất cả các tệp phù hợp. Nếu không có trình lặp, các cuộc gọi API cần thiết sẽ làm cho mã của bạn khó đọc hơn.
Hãy suy nghĩ về vòng lặp là khái niệm đơn giản cho phép bạn viết những gì bạn thực sự có ý nghĩa để nói và trừu tượng đi các chi tiết gritty nitty. Nếu bạn phải thực hiện một thuật toán phức tạp mà khó hiểu, bạn muốn giảm sự lộn xộn của mã.
Nếu bạn có cấu trúc hai chiều, ví dụ: std :: vector < std :: vector>, nói cách khác là một bảng, trong đó mỗi vector bên trong được yêu cầu có cùng độ dài, bạn có thể cần phải lặp qua mọi phần tử thứ n của các vectơ bên trong. Nếu điều này xảy ra thường xuyên, mã của bạn có thể trở nên đơn giản hơn rất nhiều khi bạn triển khai một trình lặp thay vì lan truyền các vòng lặp lồng nhau trong suốt mã.
Từ những gì các câu trả lời cho biết, bạn sẽ nghĩ rằng tất cả mọi người ra khỏi đó đã sốt sắng viết vòng lặp! Nói cá nhân, tôi nghĩ rằng tôi có thể đã làm như vậy có lẽ hai lần trong sự nghiệp C++ của tôi. –
Như được hiển thị trong các câu trả lời, có những lúc nó có ý nghĩa để thực hiện một iterator tùy chỉnh, nhưng những lần đó là hiếm. Nếu lớp container của bạn được xây dựng trên đầu trang của một container STL, nó có thể thích hợp chỉ để lộ các trình vòng lặp của container bên dưới chứ không phải là của riêng bạn. –
Chủ yếu là tôi nghĩ mọi người đề cập đến các trình vòng lặp có sẵn trong một số thư viện. Ví dụ: xem http://www.boost.org/doc/libs/1_42_0/libs/iterator/doc/index.html#specialized-adaptors. Không cần phải tự mình thực hiện;) – UncleBens