Iterators এর মৌলিক ধারণা

Iterators (ইটেরেটর) - সি++ স্ট্যান্ডার্ড লাইব্রেরি (C++ Standard Library) - Computer Programming

369

Iterators C++ প্রোগ্রামিংয়ে একটি গুরুত্বপূর্ণ উপাদান, যা কনটেইনারের (যেমন vector, deque, list) উপাদানগুলোর মধ্য দিয়ে চলাফেরা করতে সাহায্য করে। এটি মূলত একটি পয়েন্টারের মতো কাজ করে, যা কনটেইনারের প্রতিটি উপাদানে একে একে অ্যাক্সেস করার জন্য ব্যবহৃত হয়। ইটরেটর ব্যবহার করে প্রোগ্রামাররা কনটেইনারের উপাদানগুলোকে সহজে এবং কার্যকরীভাবে অ্যাক্সেস, পরিবর্তন, এবং প্রক্রিয়াকরণ করতে পারে।


ইটরেটরসের মৌলিক ধারণা

  • ইটরেটর হল একটি অবজেক্ট যা কনটেইনারের প্রতিটি উপাদানের অবস্থান নির্দেশ করে।
  • ইটরেটর সাধারণত begin() এবং end() ফাংশনের মাধ্যমে কনটেইনারের শুরু এবং শেষ নির্ধারণ করে।
  • ইটরেটরকে ++ এবং -- অপারেটরের মাধ্যমে পরবর্তী বা পূর্ববর্তী উপাদানে নিয়ে যাওয়া যায়।
  • এটি একটি পয়েন্টারের মতো কাজ করে, তাই কনটেইনারের উপাদানগুলোর সাথে সরাসরি কাজ করতে দেয়।

ইটরেটরসের ধরনসমূহ

C++ এ বিভিন্ন প্রকারের ইটরেটর রয়েছে, প্রতিটির নিজস্ব ব্যবহার ও বৈশিষ্ট্য রয়েছে:

  1. Input Iterator: কনটেইনার থেকে একবার পড়ার জন্য ব্যবহৃত হয়। সাধারণত যখন কনটেইনার থেকে শুধু পড়ার প্রয়োজন হয় তখন ব্যবহার করা হয়।
  2. Output Iterator: কনটেইনারে একবার লেখার জন্য ব্যবহৃত হয়। সাধারণত শুধুমাত্র লেখার জন্য এবং পরবর্তী উপাদানে যাওয়ার জন্য ব্যবহৃত হয়।
  3. Forward Iterator: কনটেইনারের উপাদানগুলোর উপর সামনের দিকে একবার ট্রাভার্স করার জন্য ব্যবহৃত হয়। এটি Input এবং Output ইটরেটর উভয়ের মতো কাজ করতে পারে।
  4. Bidirectional Iterator: কনটেইনারের উপাদানগুলোর উপর সামনের দিকে এবং পিছনের দিকে উভয় দিকেই চলাফেরা করতে পারে।
  5. Random Access Iterator: এলোমেলোভাবে (randomly) কনটেইনারের যেকোনো উপাদানে অ্যাক্সেস করার সুবিধা দেয়। এটি অ্যারে বা ভেক্টরের জন্য খুবই কার্যকর।

ইটরেটর ব্যবহার

ইটরেটর ব্যবহার করার জন্য সাধারণত কনটেইনারের begin() এবং end() ফাংশন ব্যবহার করা হয়। begin() ফাংশন কনটেইনারের প্রথম উপাদানের অবস্থান নির্দেশ করে এবং end() ফাংশনটি শেষের পরের অবস্থান নির্দেশ করে।

উদাহরণ ১: std::vector এর সাথে ইটরেটর ব্যবহার

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {10, 20, 30, 40, 50};

    // ভেক্টরের শুরু থেকে শেষ পর্যন্ত ইটরেটর ব্যবহার করে ট্রাভার্স করা
    for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
        std::cout << *it << " "; // ইটরেটর ডেরেফারেন্স করে মান প্রিন্ট করা
    }

    return 0;
}

আউটপুট:

10 20 30 40 50

উদাহরণ ২: std::list এর সাথে Bidirectional Iterator ব্যবহার

#include <iostream>
#include <list>

int main() {
    std::list<int> lst = {1, 2, 3, 4, 5};

    // লিস্টের শুরু থেকে শেষ পর্যন্ত ইটরেটর ব্যবহার করে ট্রাভার্স করা
    for (std::list<int>::iterator it = lst.begin(); it != lst.end(); ++it) {
        std::cout << *it << " ";
    }

    return 0;
}

উদাহরণ ৩: std::vector এর সাথে Random Access Iterator ব্যবহার

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec = {1, 2, 3, 4, 5};

    // Random Access ইটরেটর দিয়ে যেকোনো উপাদানে অ্যাক্সেস
    std::cout << "Third element: " << vec[2] << std::endl; // আউটপুট: 3
    std::cout << "Fifth element: " << vec[4] << std::endl; // আউটপুট: 5

    return 0;
}

সাধারণ ইটরেটর অপারেশন

ইটরেটর ব্যবহার করে কিছু সাধারণ অপারেশন করা যায়:

  • ডেরেফারেন্স করা: *it এর মাধ্যমে ইটরেটরের নির্দেশিত মান পাওয়া যায়।
  • ইনক্রিমেন্ট করা: ++it দ্বারা পরবর্তী উপাদানে যাওয়া যায়।
  • ডিক্রিমেন্ট করা: --it দ্বারা পূর্ববর্তী উপাদানে যাওয়া যায় (Bidirectional Iterator বা Random Access Iterator এর জন্য)।
  • এলোমেলো অ্যাক্সেস: it + n, it - n (শুধুমাত্র Random Access Iterator এর জন্য)।

ইটরেটরের ব্যবহারিক দিক

  • কনটেইনারের উপর ইটারেট করা: ইটরেটর ব্যবহার করে কনটেইনারের প্রতিটি উপাদানের উপর লুপ চালানো যায়।
  • ডেটা অ্যাক্সেস এবং পরিবর্তন: ইটরেটর ব্যবহার করে কনটেইনারের ডেটা পড়া বা লেখা সহজ হয়।
  • কনটেইনার-স্বাধীন কোডিং: ইটরেটর ব্যবহার করলে একই কোড বিভিন্ন কনটেইনারের জন্য ব্যবহার করা যায়, কারণ সব কনটেইনারেই ইটরেটর থাকে।

উপসংহার

ইটরেটর C++ প্রোগ্রামিংয়ে কনটেইনারের উপাদানগুলোর উপর সহজে ট্রাভার্স এবং ম্যানিপুলেশন করার একটি কার্যকরী পদ্ধতি। এটি কনটেইনারের প্রকারভেদ নির্বিশেষে উপাদান অ্যাক্সেসের একটি সাধারণ এবং নমনীয় উপায় সরবরাহ করে।

Content added By
Promotion

Are you sure to start over?

Loading...