Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ एसटीएल का उपयोग कर कस्टम ऑब्जेक्ट्स के वेक्टर को सॉर्ट करना


आप C++ STL फ़ंक्शन std::sort का उपयोग करके कस्टम ऑब्जेक्ट के वेक्टर को सॉर्ट कर सकते हैं। सॉर्ट फ़ंक्शन में एक अतिभारित रूप होता है जो पहले, अंतिम, तुलनित्र तर्क के रूप में लेता है। पहले और आखिरी कंटेनर के पहले और आखिरी तत्वों के इटरेटर हैं। तुलनित्र एक विधेय कार्य है जिसका उपयोग यह बताने के लिए किया जा सकता है कि कंटेनर को कैसे क्रमबद्ध किया जाए।

उदाहरण

#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. सी ++ में एक वेक्टर को सॉर्ट करना

    सी ++ में वेक्टर को सॉर्ट करना std ::सॉर्ट() का उपयोग करके किया जा सकता है। इसे हेडर में परिभाषित किया गया है। एक स्थिर प्रकार प्राप्त करने के लिए std::stable_sort का उपयोग किया जाता है। यह बिल्कुल सॉर्ट () जैसा है लेकिन समान तत्वों के सापेक्ष क्रम को बनाए रखता है। आवश्यकता के अनुसार क्विकसॉर्ट (),

  1. एसटीएल में वेक्टर लागू करने के लिए सी++ प्रोग्राम

    जब कोई तत्व डाला या हटाया जाता है तो वेक्टर स्वचालित रूप से गतिशील सरणी की तरह आकार बदलने की क्षमता रखते हैं, कंटेनर स्वचालित रूप से अपने भंडारण को संभालता है। वेक्टर तत्वों को सन्निहित भंडारण में रखा जाता है ताकि उन्हें इटरेटर्स का उपयोग करके एक्सेस और ट्रैवर्स किया जा सके। डेटा को वेक्टर के आरंभ,

  1. एसटीएल का उपयोग कर सी ++ में ऐरे उत्पाद

    यह ऐरे उत्पाद का पता लगाने के लिए C++ प्रोग्राम का एक उदाहरण है। एल्गोरिदम Begin Initialize the values of array. Call used defined function accumulate to return the product of array. Print the solution. End. उदाहरण कोड #include <iostream> #include <numeric> using namespace std;