কম্পিউটার টিউটোরিয়াল

C++ স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি (STL)

স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি (STL) হলো C++ প্রোগ্রামিং ল্যাঙ্গুয়েজের জন্য একটি সফটওয়্যার লাইব্রেরি যা C++ স্ট্যান্ডার্ড লাইব্রেরির অনেক অংশকে প্রভাবিত করেছে। এটি চারটি কম্পোনেন্ট প্রদান করে: অ্যালগরিদম, কন্টেইনার, ফাংশন, এবং ইটারেটর। দ্রষ্টব্য যে "STL" বা "Standard Template Library" শব্দটি ISO 14882 C++ স্ট্যান্ডার্ডে কোথাও দেখা যায় না। তাই C++ স্ট্যান্ডার্ড লাইব্রেরিকে STL বলা ভুল, অর্থাৎ STL এবং C++ স্ট্যান্ডার্ড লাইব্রেরি ২টি আলাদা জিনিস যেখানে STL পরবর্তীটির একটি সাবসেট।

কন্টেইনার (Containers)

STL-এ সিকোয়েন্স কন্টেইনার এবং অ্যাসোসিয়েটিভ কন্টেইনার থাকে। কন্টেইনার হলো ডেটা সংরক্ষণকারী অবজেক্ট। স্ট্যান্ডার্ড সিকোয়েন্স কন্টেইনারগুলোর মধ্যে আছে vector, deque, এবং list। স্ট্যান্ডার্ড অ্যাসোসিয়েটিভ কন্টেইনারগুলো হলো set, multiset, map, multimap, hash_set, hash_map, hash_multiset, এবং hash_multimap। এছাড়া কন্টেইনার অ্যাডাপ্টারও আছে: queue, priority_queue, এবং stack, যেগুলো নির্দিষ্ট ইন্টারফেসের কন্টেইনার যারা অন্য কন্টেইনারকে ইমপ্লিমেন্টেশন হিসেবে ব্যবহার করে।

ইটারেটর (Iterators)

একটি ইটারেটর হলো একটি অবজেক্ট যা একজন প্রোগ্রামারকে একটি কন্টেইনার ট্রাভার্স করতে সক্ষম করে। STL পাঁচ ধরনের ইটারেটর ইমপ্লিমেন্ট করে: ইনপুট (ভ্যালু সিকোয়েন্স পড়তে), আউটপুট (ভ্যালু সিকোয়েন্স লিখতে), ফরওয়ার্ড (পড়া, লেখা, এবং ফরওয়ার্ড যেতে পারে), বাইডিরেকশনাল (ফরওয়ার্ড ইটারেটরের মতো, কিন্তু পিছনে যেতে পারে) এবং র‍্যান্ডম অ্যাক্সেস (এক অপারেশনে যেকোনো সংখ্যক স্টেপ আজাদে যেতে পারে)। ইটারেটর হলো মূল বৈশিষ্ট্য যা STL-এর জেনারেলিটি অনুমতি দেয়।

অ্যালগরিদম (Algorithms)

STL-এ অ্যালগরিদম হলো ফাংশন들의 একটি সংকলন যা বিশেষভাবে এলিমেন্টের রেঞ্জে ব্যবহারের জন্য ডিজাইন করা। একটি রেঞ্জ হলো যেকোনো অবজেক্ট সিকোয়েন্স যা ইটারেটর বা পয়েন্টার দিয়ে অ্যাক্সেস করা যায়, যেমন একটি অ্যারে বা STL কন্টেইনার এর একটি ইনস্ট্যান্স। STL-এ অ্যালগরিদমের উদাহরণ: sort (রেঞ্জে এলিমেন্ট সাজান), binary_search (সর্টেড সিকোয়েন্সে একটি ভ্যালু আছে কিনা টেস্ট করুন), min_element (রেঞ্জে সবচেয়ে ছোট এলিমেন্ট রিটার্ন করুন), ইত্যাদি। দ্রষ্টব্য যে এই সব অ্যালগরিদম যেকোনো টেমপ্লেট হিসেবে স্বীকৃত ডেটা টাইপে প্রয়োগ করা যায়।

  1. C++-এ মেজ সমস্যা: বল দিয়ে পথ খুঁজে বের করা

  2. C++ STL-এ স্ট্যাক (Stack)

  3. C++ STL-এ প্রায়োরিটি কিউ (Priority Queue)

  4. C++-এ স্ট্যান্ডার্ড লাইব্রেরি কী?