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

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


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

उदाहरण

#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"));        // 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++ वर्जन पर काम कर रहे हैं, तो आप फ़ंक्शन रेफरेंस भी पास कर सकते हैं:

// फ़ंक्शन परिभाषित करें: bool comparator(const MyStruct& lhs, const MyStruct& rhs) {    return lhs.key < rhs.key; } // sort को पास करें: sort(vec.begin(), vec.end(), &comparator);

आप क्लास/स्ट्रक्ट में < ऑपरेटर को ओवरलोड भी कर सकते हैं और सीधे sort(first, last) फॉर्म का उपयोग कर सकते हैं। तो सॉर्टिंग करते समय, यह आइटम्स की तुलना के लिए इस फ़ंक्शन को लेगा।



  1. - C++ में वेक्टर को सॉर्ट करना

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

  1. - C++ STL में Vector का कार्यान्वयन

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

  1. - C++ STL का उपयोग करके ऐरे का गुणनफल

    यह ऐरे गुणनफल ज्ञात करने के लिए C++ प्रोग्राम का एक उदाहरण है। एल्गोरिदम Begin ऐरे के मान इनिशियलाइज़ करें। ऐरे का गुणनफल लौटाने के लिए उपयोगकर्ता परिभाषित फंक्शन accumulate को कॉल करें। समाधान प्रिंट करें। End. उदाहरण कोड #include <iostream> #include <numeric> using names