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

C++ STL-এ লিস্ট (List)


C++ STL-এ list হলো ডাবলি লিঙ্কড লিস্ট কন্টেইনার। এতে এলিমেন্ট নন-কন্টিগুয়াস মেমোরিতে স্টোর হয়। ইন্সারশন ও ডিলিশন দুই প্রান্ত থেকে O(1)-এ সম্ভব। ভেক্টরের চেয়ে র‍্যান্ডম এক্সেস স্লো।

লিস্টের সুবিধা ও অসুবিধা

  • সুবিধা: ইটারেটর পজিশন ঠিক থাকলে ইন্সারশন/ডিলিশন খুব দ্রুত।
  • অসুবিধা: পজিশন দিয়ে সরাসরি এলিমেন্ট এক্সেস করা যায় না (O(n))।

প্রধান ফাংশনসমূহ

ফাংশনব্যবহার
push_front(x)শুরুরে এলিমেন্ট যোগ করুন
push_back(x)শেষে এলিমেন্ট যোগ করুন
insert(pos, n, x)pos পজিশনে n কপি x ইনসার্ট করুন
pop_front()প্রথম এলিমেন্ট মুছে দিন
pop_back()শেষ এলিমেন্ট মুছে দিন
front() / back()প্রথম/শেষ এলিমেন্ট রেফারেন্স
size() / empty()সাইজ / খালি কিনা চেক
resize(n, val)সাইজ পরিবর্তন করুন
clear()সব এলিমেন্ট মুছে দিন
remove(val)সব val মুছে দিন
remove_if(pred)প্রিডিকেট অনুযায়ী মুছে দিন
erase(pos) / erase(first,last)এক বা একাধিক এলিমেন্ট মুছে দিন
reverse()লিস্ট রিভার্স করুন
unique()কনসিকিউটিভ ডুপ্লিকেট মুছে দিন
sort()লিস্ট সর্ট করুন
merge(other)সর্টেড লিস্ট মার্জ করুন
splice(pos, other)অন্য লিস্টের এলিমেন্ট মুভ করুন

উদাহরণ

#include <bits/stdc++.h>
using namespace std;

int main() {
    list<int> lst = {10, 20, 30};
    lst.push_front(5);   // {5,10,20,30}
    lst.push_back(40);   // {5,10,20,30,40}
    lst.insert(next(lst.begin(), 2), 15); // {5,10,15,20,30,40}
    for (int x : lst) cout << x << " "; // 5 10 15 20 30 40
    cout << endl;
    lst.remove(15);      // {5,10,20,30,40}
    lst.reverse();       // {40,30,20,10,5}
    for (int x : lst) cout << x << " ";
}
  1. লিংকড লিস্ট ফ্ল্যাটেন করা (C++)

  2. C++-এ লিংকড লিস্ট পার্টিশন (Partition List)

  3. সি++ প্রোগ্রাম: পারমুটেশন লিস্ট থেকে অনুপস্থিত পারমুটেশন খুঁজে বের করা

  4. C++-এ স্ট্র্যান্ড সর্ট (Strand Sort)