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

C++ STL-এ set::insert() ফাংশন

C++ STL-এ Set কী?

C++ STL-এ সেট হল এমন কন্টেইনার যেগুলো জেনারেল অর্ডারে ইউনিক এলিমেন্ট ধারণ করতে হবে। সেটে ইউনিক এলিমেন্ট থাকতে হয় কারণ এলিমেন্টের ভ্যালুই এলিমেন্টটিকে আইডেন্টিফাই করে। একবার সেট কন্টেইনারে একটি ভ্যালু যোগ করলে পরে সেটা মডিফাই করা যায় না, যদিও আমরা এখনও সেটে ভ্যালু রিমুভ বা অ্যাড করতে পারি। সেটগুলো বাইনারি সার্চ ট্রি হিসেবে ব্যবহার করা হয়।

set::insert() কী?

insert() ফাংশন হল C++ STL-এ একটি বিল্ট-ইন ফাংশন, যা হেডার ফাইলে ডিফাইন করা আছে। এই ফাংশন সেট কন্টেইনারে এলিমেন্ট ইনসার্ট করতে ব্যবহৃত হয়। যখন আমরা এলিমেন্ট ইনসার্ট করি, তখন কন্টেইনারর সাইজ ইনসার্ট হওয়া এলিমেন্টের সংখ্যা অনুযায়ী বাড়ে। যেহেতু সেটে ইউনিক ভ্যালু থাকে, তাই insert() শুধু এলিমেন্ট ইনসার্ট করে না, এটি প্রথমে চেক করে যে যে এলিমেন্টটি ইনসার্ট করা হবে সেটা সেট কন্টেইনারে ইতিমধ্যে আছে কিনা। এছাড়া, সেটে সব এলিমেন্ট সোর্টেড পজিশনে থাকে, তাই আমরা যে এলিমেন্ট ইনসার্ট করব সেটা তার সোর্টেড পজিশন অনুযায়ী ইনসার্ট হবে।

সিনট্যাক্স

Set1.insert(const type_t &value); ----(1)
Or
Set1.insert(iterator position, const type_t &value); -----(2)
Or
Set1.insert(iterator position_1, iterator position_2); -----(3)

প্যারামিটার

  • value − সেট কন্টেইনারে ইনসার্ট করার वो ভ্যালু।

  • position − এটি পজিশনের একটি হিন্ট, এটি এই পজিশন থেকে সার্চ শুরু করবে এবং এলিমেন্টটি সেখানে ইনসার্ট করবে যেখানে সেটা সুইটেড।

  • position_1, position_2 − ये वो ইটারেটর যেগুলো সেই রেঞ্জকে স্পেসিফাই করে যা insert()-এর সাথে সংশ্লিষ্ট সেটে ইনসার্ট করতে হবে। position_1 রেঞ্জের শুরু এবং position_2 রেঞ্জের শেষ।

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

ফাংশনটি ফাংশনে পাস করা আর্গুমেন্ট অনুযায়ী বিভিন্ন টাইপের ভ্যালু রিটার্ন করে।

  • যখন আমরা শুধু ভ্যালু পাস করি; ফাংশন সেট কন্টেইনারে ইনসার্ট হওয়া এলিমেন্টকে পয়েন্ট করে একটি ইটারেটর রিটার্ন করে।

  • যখন আমরা পজিশন সাথে ভ্যালু পাস করি; ফাংশন আবার সেট কন্টেইনারে ইনসার্ট হওয়া এলিমেন্টকে পয়েন্ট করে একটি ইটারেটর রিটার্ন করে।

  • যখন আমরা position_1 এবং position_2 পাস করি; ফাংশন वो ভ্যালুগুলোর সেট রিটার্ন করে যা position_1 থেকে শুরু হয়ে position_2-এ শেষ হয়।

উদাহরণ

Input: set<int> myset; myset.insert(10); Output: values in the set = 10
Input: set <int> myset = {11, 12, 13, 14}; myset.insert(myset.begin(), 10); Output: values in the set = 10 11 12 13 14

সম্পূর্ণ কোড উদাহরণ ১ (কিউর মত একের পর এক ইনসার্ট)

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

int main() {
    set<int> mySet;
    mySet.insert(10);
    mySet.insert(20);
    mySet.insert(30);
    mySet.insert(40);
    mySet.insert(50);
    cout << "Elements are: ";
    for (auto i = mySet.begin(); i != mySet.end(); i++)
        cout << *i << " ";
    return 0;
}

আউটপুট

Elements are : 10 20 30 40 50

সম্পূর্ণ কোড উদাহরণ ২ (পজিশন অনুযায়ী ইনসার্ট)

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

int main() {
    set<int> mySet;
    auto i = mySet.insert(mySet.begin(), 10);
    i = mySet.insert(i, 20);
    i = mySet.insert(i, 40);
    i = mySet.insert(i, 30);
    i = mySet.insert(i, 80);
    i = mySet.insert(mySet.end(), 90);
    cout << "Elements are: ";
    for (auto i = mySet.begin(); i != mySet.end(); i++)
        cout << *i << " ";
    return 0;
}

আউটপুট

Elements are: 10 20 30 40 80 90
  1. C++ STL-এ set::lower_bound() ফাংশন

  2. C++ STL-এ set::find() ফাংশন

  3. C++ STL-এ multiset insert() ফাংশন ব্যবহার

  4. C++ STL-এ emplace বনাম insert: পার্থক্য এবং দক্ষতা