C++ STL (স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি) একটি শক্তিশালী C++ টেমপ্লেট ক্লাস সেট যা সাধারণ উদ্দেশ্যের ক্লাস এবং ফাংশন প্রদান করে যা টেমপ্লেটের মাধ্যমে অনেক জনপ্রিয় এবং সাধারণত ব্যবহৃত অ্যালগরिदম এবং ডেটা স্ট্রাকচার যেমন ভেক্টর, লিস্ট, কিউ এবং স্ট্যাক বাস্তবায়ন করে।
এটি কন্টেইনার ক্লাস, অ্যালগরিদম এবং ইটেরেটরের একটি লাইব্রেরি। এটি একটি জেনারেলাইজড লাইব্রেরি, তাই এর কম্পোনেন্টগুলো প্যারামিটারাইজড। STL নিয়ে কাজ করার জন্য টেমপ্লেট ক্লাসের عملي জ্ঞান অপরিহার্য।
টেমপ্লেট C++ প্রোগ্রামিং ভাষার একটি বৈশিষ্ট্য যা ফাংশন এবং ক্লাসকে জেনেরিক টাইপের সাথে কাজ করতে দেয়। এটি একটি ফাংশন বা ক্লাসকে প্রতিটি ডেটা টাইপের জন্য পুনরায় লিখতে না হলেও অনেক ভিন্ন ডেটা টাইপের সাথে কাজ করতে সক্ষম করে।
C++ স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরির তিনটি সুগঠিত কম্পোনেন্ট রয়েছে:
১. কন্টেইনার (Containers)
কন্টেইনার নির্দিষ্ট ধরনের অবজেক্টের সংগ্রহ পরিচালনা করতে ব্যবহৃত হয়। ডিক, লিস্ট, ভেক্টর, ম্যাপ ইত্যাদি সহ কন্টেইনারের বেশ কিছু আলাদা ধরন রয়েছে।
সিকোয়েন্স কন্টেইনার (Sequence Containers) - এই কন্টেইনারগুলো ক্রমাগতভাবে অ্যাক্সেসযোগ্য ডেটা স্ট্রাকচার বাস্তবায়ন করে।
- ভেক্টর (vector)
- লিস্ট (list)
- ডিক (deque)
- অ্যারে (arrays)
- ফরওয়ার্ড_লিস্ট (forward_list)
কন্টেইনার অ্যাডাপ্টর (Container Adaptors) - এগুলো সিকোয়েন্সিয়াল কন্টেইনারের জন্য একটি ভিন্ন ইন্টারফেস প্রদান করে।
- কিউ (queue)
- প্রায়োরিটি_কিউ (priority_queue)
- স্ট্যাক (stack)
অ্যাসোসিয়েটিভ কন্টেইনার (Associative Containers) - এগুলো সর্টেড ডেটা স্ট্রাকচার বাস্তবায়ন করে যেগুলো দ্রুত সার্চ করা যায় (O(log n) কমপ্লেক্সিটি)।
- সেট (set)
- মাল্টিসেট (multiset)
- ম্যাপ (map)
- মাল্টিম্যাপ (multimap)
অনঅর্ডার্ড অ্যাসোসিয়েটিভ কন্টেইনার (Unordered Associative Containers) - এগুলো আনসর্টেড ডেটা স্ট্রাকচার বাস্তবায়ন করে যেগুলো দ্রুত সার্চ করা যায়।
- আনঅর্ডার্ড_সেট (unordered_set)
- আনঅর্ডার্ড_মাল্টিসেট (unordered_multiset)
- আনঅর্ডার্ড_ম্যাপ (unordered_map)
- আনঅর্ডার্ড_মাল্টিম্যাপ (unordered_multimap)
২. অ্যালগরিদম (Algorithms)
অ্যালগরিদম কন্টেইনারের ওপর কাজ করে। এগুলো কন্টেইনারের বিষয়বস্তু ইনিশিয়ালাইজ, সর্ট, সার্চ এবং ট্রান্সফর্ম করার উপায় প্রদান করে।
অ্যালগরিদম
- সর্টিং (Sorting)
- সার্চিং (Searching)
- গুরুত্বপূর্ণ STL অ্যালগরিদম (Important STL Algorithms)
- উপযোগী অ্যারে অ্যালগরিদম (Useful Array algorithms)
- পার্টিশন অপারেশন (Partition Operations)
৩. ইটেরেটর (Iterators)
ইটেরেটর অবজেক্টের সংগ্রহের উপাদানগুলোর মাধ্যমে ধাপে ধাপে এগিয়ে যেতে ব্যবহৃত হয়। এই সংগ্রহগুলো কন্টেইনার বা কন্টেইনারের উপসেট হতে পারে।