Iterator c++ là gì

  -  
Chào chúng ta đang quan sát và theo dõi khóa huấn luyện và đào tạo thiết kế trực tuyến ngôn từ C++.quý khách vẫn xem: Iterator c++ là gì

Trong bài học về STL containers, mình đã giới thiệu với các bạn một vài class được thực hiện để tạo nên những container cùng với những cách tổ chức triển khai dữ liệu khác nhau. Tuy nhiên, tập vừa lòng những phần tử được chứa bên phía trong container vẫn đang còn một riêng lẻ từ bỏ nhất quyết (tùy theo thuật toán sắp xếp được chọn), cùng để trông nom qua những thành phần trong các container họ sẽ áp dụng những STL Iterator tương xứng.Quý khách hàng vẫn xem: :: Iterator C++ Là Gì ? Map">Vector:: Iterator C++ Là Gì ? Map

STL Iterator

Một Iterator là một trong những đố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ơ thổ địa từ các bộ phận bên trong mảng. Iterator còn là một trong cách để truy cập tài liệu bên trong các container.

Bạn đang xem: Iterator c++ là gì

Các bạn cũng có thể hình dùng Iterator giống hệt như một nhỏ trỏ trỏ mang lại một phần tử như thế nào kia phía bên trong container với một số trong những toán thù tử đã được định nghĩa:

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

Với mỗi container class họ sẽ có một dạng hình iterator tương ứng. Mình vẫn đem ví dụ về iterator của class std::vector như sau:

#include #include using namespace std;int main()std::vector vec;std::vector::iterator iter;return 0;Như vậy, bọn họ có iter là 1 trong những đối tượng người tiêu dùng của class std::vector::iterator. Với biện pháp knhì báo này, bạn cũng có thể là bao gồm một class thương hiệu là iterator được khái niệm bên phía trong khối lệnh của class std::vector.

lấy một ví dụ lúc chúng ta mong gồm một Iterator cần sử dụng cho một std::các mục thì Iterator sẽ được knhị báo nlỗi sau:

Mỗi container class vào STL (xung quanh các container quan trọng nlỗi std::stachồng và std::queue) rất nhiều cất tư tưởng của một iterator bên phía trong.

Xem thêm: Tăng Điểm Thiếu Lâm Quyền Võ Lâm 1, Hướng Dẫn Tăng Điểm Thiếu Lâm Đao


*

Và những container bao gồm chứa tư tưởng class iterator sẽ có các cách thức trả về quý giá giao diện iterator tương ứng:

begin() trả về một iterator thay mặt đến địa điểm của bộ phận trước tiên vào container.end() trả về một iterator thay mặt đến địa điểm đứng tức thì sau bộ phận sau cuối trong container.cbegin() trả về một hằng (read-only) iterator thay mặt mang lại địa điểm của thành phần thứ nhất vào container.cend() trả về một hằng (read-only) iterator đại diện đến địa chỉ đứng ngay lập tức sau bộ phận cuối cùng trong 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 bộ phận sau cuối trong container là (vec.size() - 1).

Xem thêm: Game Plants Vs Zombies Is A Game Plants Vs Zombies 2, Plants Vs Zombies™ 2 Free

Tại sao end() lại trả về vị trí thua cuộc bộ phận sau cùng trong container?

Đó bởi vì họ đã sử dụng iterator này để bình chọn coi thử bọn họ đã chăm bẵm không còn phần tử vào mảng giỏi không. Ví dụ:

Hẹn gặp gỡ lại các bạn vào bài học tiếp sau vào khóa đào tạo và huấn luyện lập trình sẵn C++ hướng thực hành thực tế.