Chào chúng ta sẽ theo dõi và quan sát khóa học lập trình sẵn trực con đường ngôn từ C++.Quý Khách đã xem: Iterator c++ là gì

Trong bài học kinh nghiệm về STL containers, tôi đã ra mắt với chúng ta một số class được áp dụng nhằm tạo thành những container cùng với những cách tổ chức dữ liệu khác nhau. Tuy nhiên, tập phù hợp những bộ phận được cất bên trong container vẫn đang còn một trơ thổ địa trường đoản cú nhất thiết (tùy từng thuật toán thù thu xếp được chọn), cùng nhằm chăm nom qua các bộ phận trong những container chúng ta vẫn sử dụng các STL Iterator tương ứng.

Bạn đang xem: Vector:: Iterator C++ Là Gì ? Map

STL Iterator

Một Iterator là một đối tượng người dùng rất có thể đi qua (iterate over) một container class mà không cần biết trơ khấc trường đoản cú các thành phần phía bên trong mảng. Iterator còn là một trong cách để truy vấn tài liệu phía bên trong các container.

Các bạn có thể hình cần sử dụng Iterator y hệt như một nhỏ trỏ trỏ cho 1 phần tử làm sao kia bên trong container với một trong những toán thù tử đã có định nghĩa:

Operator* cereference và trả về giá trị bên trong container trên địa điểm cơ mà iterator được đặt.Operator++ di chuyển iterator mang đến bộ phận tiếp theo trong container.Operator-- ngược trở lại so với operator++.Operator== với operator!= dùng làm so sánh vị trí tương đối của 2 thành phần đang được trỏ mang lại do 2 iterator.Operator= dùng làm gán địa chỉ mà lại iterator trỏ cho.Knhì báo một Iterator

Với từng container class chúng ta sẽ có một thứ hạng iterator tương xứng. Mình đã lấy ví dụ về iterator của class std::vector nlỗi sau:

#include #include using namespace std;int main()std::vector vec;std::vector::iterator iter;return 0;do vậy, chúng ta có iter là một đối tượng người dùng của class std::vector::iterator. Với biện pháp khai báo này, chúng ta cũng có thể là có một class tên là iterator được quan niệm bên phía trong khối lệnh của class std::vector.

Lưu ý: dạng hình dữ liệu của các thành phần vào container class đang là loại dữ liệu được sử dụng cho generic_type của iterator.

Xem thêm: Định Khoản Phân Bổ Công Cụ Dụng Cụ Dụng Cụ Và Chi Phí Trả Trước

Ví dụ Lúc bọn họ hy vọng gồm một Iterator sử dụng cho một std::menu thì Iterator sẽ tiến hành knhì báo nhỏng sau:

Mỗi container class vào STL (ngoại trừ những container đặc trưng như std::stachồng cùng std::queue) mọi đựng khái niệm của một iterator bên trong.


*

Và gần như container tất cả chứa có mang class iterator sẽ có được mọi thủ tục trả về quý hiếm thứ hạng iterator tương ứng:

begin() trả về một iterator đại diện mang đến địa điểm của phần tử đầu tiên trong container.end() trả về một iterator đại diện thay mặt mang lại địa chỉ đứng ngay lập tức sau phần tử ở đầu cuối trong container.cbegin() trả về một hằng (read-only) iterator thay mặt đại diện cho vị trí của bộ phận trước tiên trong container.cend() trả về một hằng (read-only) iterator đại diện đến địa điểm đứng ngay sau phần tử cuối cùng vào container.

Ví dụ:

int main(){std::vector vec;for (int i = 0; i ::iterator the_beginning = vec.begin();std::vector::iterator the_kết thúc = vec.end();std::cout , trong những lúc chỉ số của phần tử sau cuối trong container là (vec.size() - 1).

Tại sao end() lại trả về vị trí lép vế phần tử sau cùng trong container?

Đó nguyên nhân là họ đã áp dụng iterator này để bình chọn coi test họ sẽ để mắt hết thành phần vào mảng tốt chưa. Ví dụ:

Hẹn gặp mặt lại chúng ta vào bài học tiếp sau trong khóa huấn luyện xây dựng C++ hướng thực hành.