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

C++ STL-এ list::emplace_front() এবং list::emplace_back()

STL-এ List কী?

List হল একটি ডেটা স্ট্রাকচার যা সিকোয়েন্সের যেকোনো স্থানে কনস্ট্যান্ট টাইমে ইন্সারশন এবং ডিলিশন করার অনুমতি দেয়। লিস্টগুলো ডাবলি লিংকড লিস্ট হিসেবে ইমপ্লিমেন্ট করা হয়। লিস্ট নন-কন্টিগ্যুয়াস মেমোরি অ্যালোকেশন অনুমোদন করে। অ্যারে, ভেক্টর এবং ডিকের চেয়ে লিস্ট যেকোনো পজিশনে এলিমেন্ট ইন্সার্ট, এক্সট্রাক্ট এবং মুভ করার ক্ষেত্রে ভালো পারফরম করে। লিস্টে এলিমেন্টে ডায়রেক্ট অ্যাক্সেস ধীরগতির এবং লিস্ট forward_list-এর সাথে সাদৃশ্য রেখেছে, কিন্তু forward_list অবজেক্টগুলো সিঙ্গলি লিংকড লিস্ট এবং সেগুলো শুধু ফরওয়ার্ড দিয়ে ইটারেট করা যায়।

list::emplace_front() কী?

list::emplace_front() হল C++ STL-এ একটি বিল্ট-ইন ফাংশন যা হেডার ফাইলে ডিক্লেয়ার করা আছে। emplace_front() লিস্ট কন্টেইনারের শুরুতে এলিমেন্ট এমপ্লেস (ইনসার্ট) করতে ব্যবহৃত হয়। যদি কন্টেইনারটি খালি থাকে, তবে এটি এলিমেন্টটি প্রথম পজিশনে পাশ করে এবং এলিমেন্টটি প্রথম এলিমেন্ট হয়ে যায় এবং যদি কন্টেইনারটি আগে থেকেই এলিমেন্ট ধারণ করে, তবে ফাংশনটি সেটাকে ফরোয়ার্ডে ইনসার্ট করে এবং এক্সিস্টিং ফার্স্ট পজিশনের এলিমেন্টটি সেকেন্ড এলিমেন্ট হয়ে যায়। এই ফাংশন কন্টেইনারর সাইজ ১ বাড়িয়ে দেয়।

সিনট্যাক্স

listname.emplace_front (const value_type& element1);
listname.emplace_front (value_type&& element1);

প্যারামিটার

এই ফাংশন শুধু ১ এলিমেন্ট গ্রহণ করে যা এমপ্লেস/ইনসার্ট করতে হবে।

রিটার্ন ভ্যালু

এই ফাংশন কিছুই রিটার্ন করে না।

উদাহরণ

Input: list<int> mylist = {1, 2, 3, 4}; mylist.emplace_front(0) Output: List elements are = 0 1 2 3 4

সম্পূর্ণ কোড উদাহরণ

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<int> List;
    List.emplace_front(10);
    List.emplace_front(20);
    List.emplace_front(30);
    List.emplace_front(40);
    List.emplace_front(50);
    List.emplace_front(60);
    cout << "Elements are : ";
    for(auto i = List.begin(); i != List.end(); ++i)
        cout << ' ' << *i;
    return 0;
}

আউটপুট

Elements are : 60 50 40 30 20 10

list::emplace_back() কী?

list::emplace_back() হল C++ STL-এ একটি বিল্ট-ইন ফাংশন যা হেডার ফাইলে ডিক্লেয়ার করা আছে। emplace_back() লিস্ট কন্টেইনারের পিছনে বা শেষে এলিমেন্ট এমপ্লেস (ইনসার্ট) করতে ব্যবহৃত হয়। যদি কন্টেইনারটি খালি থাকে, তবে এটি শুধু এলিমেন্টটি ইনসার্ট করে এবং কন্টেইনারর সাইজ ১ হয়ে যায়, আর যদি কন্টেইনারটি আগে থেকেই এলিমেন্ট ধারণ করে, তবে ফাংশনটি সেটাকে লিস্ট কন্টেইনারের শেষে ইনসার্ট করে। এই ফাংশন কন্টেইনারর সাইজ ১ বাড়িয়ে দেয়।

সিনট্যাক্স

listname.emplace_back(const value_type& element1);
listname.emplace_back(value_type&& element1);

প্যারামিটার

এই ফাংশন শুধু ১ এলিমেন্ট গ্রহণ করে যা এমপ্লেস/ইনসার্ট করতে হবে।

রিটার্ন ভ্যালু

এই ফাংশন কিছুই রিটার্ন করে না।

উদাহরণ

Input: list<int> list1 = {1, 2, 3, 4}; list1.emplace_back(5); Output: List: 1 2 3 4 5

সম্পূর্ণ কোড উদাহরণ

#include <iostream>
#include <list>
using namespace std;

int main() {
    list<int> List;
    List.emplace_back(10);
    List.emplace_back(20);
    List.emplace_back(30);
    List.emplace_back(40);
    List.emplace_back(50);
    List.emplace_back(60);
    cout << "elements are : ";
    for(auto i = List.begin(); i != List.end(); ++i)
        cout << ' ' << *i;
    return 0;
}

আউটপুট

Elements are : 10 20 30 40 50 60
  1. C++ STL-এ list begin() এবং list end() ফাংশন

  2. C++ STL-এ forward_list emplace_after() এবং emplace_front() ফাংশন

  3. C++ STL-এ list crbegin() এবং crend() ফাংশন

  4. C++ STL-এ list cbegin() এবং cend() ফাংশন