এখানে আমরা দেখব কিভাবে ইউজার-ডিফাইনড ডেটা টাইপের জন্য সেট (set) তৈরি করা যায়। C++ STL-এ set একটি বিশেষ ডেটা স্ট্রাকচার যা ডেটা সর্টেড অর্ডারে সংরক্ষণ করে এবং ডুপ্লিকেট এন্ট্রি অনুমতি দেয় না। আমরা যেকোনো টাইপের ডেটার জন্য set ব্যবহার করতে পারি, এখানে ইউজার-ডিফাইনড টাইপের জন্য দেখাব।
ইউজার-ডিফাইনড টাইপ সেটে ব্যবহার করতে হলে < অপারেটর ওভাররাইড করতে হয় যাতে দুটি অবজেক্ট তুলনা করা যায়। যদি এটি না থাকে, তবে সেট সর্টেড অর্ডারে ডেটা সংরক্ষণ করতে পারবে না এবং এক্সেপশন ফেলবে।
উদাহরণ
#include <iostream>
#include <set>
using namespace std;
class Student {
int id, marks;
public:
Student(int id, int marks) {
this->id = id;
this->marks = marks;
}
bool operator <(const Student& st) const { // id দিয়ে সর্ট
return (this->id < st.id);
}
void display() const {
cout << "(" << id << ", " << marks << ")\n";
}
};
int main() {
Student s1(5, 70), s2(3, 86), s3(2, 91), s4(2, 60), s5(1, 78), s6(6, 53), s7(4, 59);
// ডুপ্লিকেট id সেট বিবেচনা করবে না
set<Student> st_set;
st_set.insert(s1);
st_set.insert(s2);
st_set.insert(s3);
st_set.insert(s4);
st_set.insert(s5);
st_set.insert(s6);
st_set.insert(s7);
for (auto it = st_set.begin(); it != st_set.end(); it++) {
it->display();
}
return 0;
}
আউটপুট
(1, 78) (2, 91) (3, 86) (4, 59) (5, 70) (6, 53)