এই আর্টিকেলে আমরা C++-এ forward_list::unique() ফাংশনের কাজকর্ম দেখব।
ফরওয়ার্ড লিস্ট সিকোয়েন্স কন্টেইনার যা কনস্ট্যান্ট টাইমে ইন্সার্ট এবং ইরেজ অপারেশন করতে পারে। এটি সিঙ্গলি-লিংকড লিস্ট হিসেবে ইমপ্লিমেন্ট করা হয়।
forward_list::unique() ফাংশনটি ফরওয়ার্ড লিস্ট থেকে সব ডুপ্লিকেট এলিমেন্ট সরিয়ে দেয়। মনে রাখবেন, একটি এলিমেন্ট কেবল তখনই রিমুভ হয় যখন সেটি তার সাথে সংলগ্ন পরবর্তী এলিমেন্টের সাথে সমান হয়। তাই এই ফাংশনটি মূলত সর্টেড লিস্টের জন্য বিশেষভাবে কার্যকর।
সিনট্যাক্স
forwardlist_name.unique(); // ডিফল্ট কমপেরিজন (operator==) forwardlist_name.unique(binary_predicate); // কাস্টম বাইনারি প্রেডিকেট
বাইনারি প্রেডিকেট সিনট্যাক্স
bool name(data_type a, data_type b)
প্যারামিটার: একটি বাইনারি প্রেডিকেট যা true রিটার্ন করলে দুটি এলিমেন্ট সমান বিবেচিত হবে।
উদাহরণ ইনপুট-আউটপুট
List: 4, 4, 17, 32, 45, 56, 56, 45, 32, 4, 17, 17 After Unique: 4, 17, 32, 45, 56 (শুধু সংলগ্ন ডুপ্লিকেট সরানো হয়েছে, লিস্ট সর্টেড নাও থাকায় সব ডুপ্লিকেট যায়নি)
সঠিক ফলাফলের জন্য লিস্টটি আগে sort() করুন।
অ্যাপ্রোচ
- বাইনারি প্রেডিকেট ফাংশন তৈরি করুন (ঐচ্ছিক)।
- ফরওয়ার্ড লিস্ট ইনিশিয়ালাইজ করুন।
unique()ফাংশন কল করুন।- ফলাফল প্রিন্ট করুন।
উদাহরণ
// C++ code to demonstrate the working of forward_list::unique()
#include <iostream>
#include <forward_list>
#include <algorithm> // for sort
using namespace std;
// function for binary predicate (absolute value comparison)
bool cmp(int a, int b) {
return (abs(a) == abs(b));
}
int main() {
// initializing the forward list
forward_list<int> List = { 2, 4, 6, 3, 5, 3, 4, 4, 9, 1, 6, 6, 2, 2, 9 };
cout << "Elements of List: ";
for (auto x = List.begin(); x != List.end(); ++x)
cout << *x << " ";
// Sort first to remove ALL duplicates
List.sort();
cout << "\nSorted List: ";
for (auto x = List.begin(); x != List.end(); ++x)
cout << *x << " ";
// defining of function that performs the Unique operation
List.unique(); // or List.unique(cmp) for custom predicate
cout << "\nUnique List: ";
for (auto x = List.begin(); x != List.end(); ++x)
cout << *x << " ";
return 0;
}
আউটপুট
Elements of List: 2 4 6 3 5 3 4 4 9 1 6 6 2 2 9 Sorted List: 1 2 2 2 2 3 3 4 4 4 5 6 6 6 9 9 Unique List: 1 2 3 4 5 6 9
গুরুত্বপূর্ণ: unique() শুধু সংলগ্ন (adjacent) ডুপ্লিকেট সরায়। সকল ডুপ্লিকেট সরাতে হলে লিস্টটি আগে sort() করে নিতে হবে।