C++ Iterator

در C++، Iterator ابزاری است که به ما اجازه می‌دهد در عناصر ساختارهای داده‌ای STL مثل Vector، List، Set و Map حرکت کنیم و به عناصر دسترسی داشته باشیم.
Iterator مانند یک Pointer هوشمند عمل می‌کند و با توابع STL هماهنگی دارد.

🔹 1️⃣ ایجاد و استفاده از Iterator

#include <iostream> #include <vector> using namespace std; int main() { vector<int> v = {10, 20, 30, 40}; // تعریف Iterator vector<int>::iterator it; for(it = v.begin(); it != v.end(); ++it) { cout << *it << " "; // دسترسی به مقدار با * } return 0; }

📌 خروجی:

10 20 30 40

()v.begin → شروع ساختار
()v.end → بعد از آخرین عنصر

🔹 2️⃣ Iterator در List

#include <iostream> #include <list> using namespace std; int main() { list<int> l = {1, 2, 3, 4}; for(list<int>::iterator it = l.begin(); it != l.end(); ++it) { cout << *it << " "; } return 0; }

📌 خروجی:

1 2 3 4

🔹 3️⃣ Iterator در Set

#include <iostream> #include <set> using namespace std; int main() { set<int> s = {5, 1, 3}; for(set<int>::iterator it = s.begin(); it != s.end(); ++it) { cout << *it << " "; } return 0; }

📌 خروجی (مرتب شده خودکار):

1 3 5

🔹 4️⃣ Iterator در Map

#include <iostream> #include <map> using namespace std; int main() { map<string, int> m = {{"Alice", 25}, {"Bob", 30}}; for(map<string,int>::iterator it = m.begin(); it != m.end(); ++it) { cout << it->first << ": " << it->second << endl; } return 0; }

📌 خروجی:

Alice: 25 Bob: 30

در Map از it->first و it->second برای دسترسی به کلید و مقدار استفاده می‌کنیم.

🔹 5️⃣ Iterator معکوس (Reverse Iterator)

vector<int> v = {1, 2, 3, 4}; for(vector<int>::reverse_iterator rit = v.rbegin(); rit != v.rend(); ++rit) { cout << *rit << " "; // چاپ معکوس عناصر }

📌 خروجی:

4 3 2 1

🔹 6️⃣ نکات کلیدی

  • Iterator مانند Pointer هوشمند است که می‌تواند به عناصر دسترسی پیدا کند.

  • انواع Iterator:

    • Forward Iterator → حرکت به جلو

    • Bidirectional Iterator → حرکت جلو و عقب (List, Set, Map)

    • Random Access Iterator → دسترسی تصادفی و حرکت سریع (Vector, Deque)

  • استفاده از Iterator باعث هماهنگی با الگوریتم‌های STL می‌شود.

  • Iterator برای پیمایش بدون وابستگی به نوع کانتینر بسیار کاربردی است.

💡 خلاصه:
Iterator در C++ ابزار استاندارد برای پیمایش عناصر STL است. با استفاده از Iterator می‌توان عناصر را بخوانیم، تغییر دهیم یا با الگوریتم‌های STL پردازش کنیم، بدون اینکه به پیاده‌سازی داخلی ساختار داده‌ای وابسته باشیم.