কম্পিউটার

C++ STL ব্যবহার করে কাস্টম অবজেক্টের ভেক্টর বাছাই করা


আপনি C++ STL ফাংশন std::sort ব্যবহার করে কাস্টম অবজেক্টের একটি ভেক্টর সাজাতে পারেন। সাজানোর ফাংশনটির একটি ওভারলোডেড ফর্ম রয়েছে যা প্রথমে, শেষ, তুলনাকারী আর্গুমেন্ট হিসাবে নেয়। প্রথম এবং শেষটি ধারকটির প্রথম এবং শেষ উপাদানগুলির পুনরাবৃত্তিকারী। কম্প্যারেটর হল একটি predicate ফাংশন যা ধারককে কীভাবে সাজাতে হয় তা জানাতে ব্যবহার করা যেতে পারে।

উদাহরণ

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;
struct MyStruct {
   int key;
   string data;
   MyStruct(int key, string data) {
      this -> key = key;
      this -> data = data;
   }
};
int main() {
   std::vector<MyStruct> vec;
   vec.push_back(MyStruct(4, "test"));
   vec.push_back(MyStruct(2, "is"));
   vec.push_back(MyStruct(3, "a"));
   vec.push_back(MyStruct(1, "this"));
   
   // Using lambda expressions in C++11
   sort(vec.begin(), vec.end(), [](const MyStruct& lhs, const MyStruct& rhs) {
      return lhs.key < rhs.key;
   });
   for(auto it = vec.begin(); it != vec.end(); it++) {
      cout << it -> data << endl;
   }
}

আউটপুট

এটি আউটপুট দেবে −

this is a test

আপনি যদি পুরানো C++ সংস্করণে কাজ করেন, তাহলে আপনি একটি ফাংশন রেফারেন্সও পাস করতে পারেন -

//define the function:
bool comparator(const MyStruct& lhs, const MyStruct& rhs) {
   return lhs.key < rhs.key;
}
// pass it to sort:
sort(vec.begin(), vec.end(), &comparator);

আপনি ক্লাস/স্ট্রাকটে <অপারেটর ওভারলোড করতে পারেন এবং সরাসরি সাজানোর (প্রথম, শেষ) ফর্মটি ব্যবহার করতে পারেন। তাই বাছাই করার সময়, আইটেমগুলির তুলনা করতে এই ফাংশনটি লাগবে৷



  1. C++ এ একটি ভেক্টরকে অবরোহী ক্রমে সাজানো

  2. C++ এ একটি ভেক্টর বাছাই করা

  3. STL এ ভেক্টর বাস্তবায়নের জন্য C++ প্রোগ্রাম

  4. STL ব্যবহার করে C++ এ অ্যারে পণ্য