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

C++ STL में हीप (make_heap, push_heap, pop_heap, sort_heap, is_heap)

C++ STL हीप ऑपरेशन्स

C++ STL में <algorithm> हेडर के तहत हीप ऑपरेशन्स प्रदान किए जाते हैं। ये एक वेक्टर (या रैंडम-एक्सेस कंटेनर) पर काम करते हैं।

1. make_heap

रेंज को हीप में बदलता है (डिफ़ॉल्ट मैक्स-हीप)।

vector heap = {33, 43, 53, 38, 28};
make_heap(heap.begin(), heap.end());
cout << "Top: " << heap.front(); // 53

2. push_heap / pop_heap

इंसर्शन/डिलीशन के बाद हीप प्रॉपर्टी रिस्टोर करते हैं।

heap.push_back(60);
push_heap(heap.begin(), heap.end()); // 60 इन्सर्ट
pop_heap(heap.begin(), heap.end());  // मैक्स हटाएं
heap.pop_back();

3. sort_heap

हीप को आरोही क्रम में सॉर्ट करता है (हीप प्रॉपर्टी नष्ट हो जाती है)।

sort_heap(heap.begin(), heap.end());
// अब heap सॉर्टेड है

4. is_heap / is_heap_until

चेक करें कि रेंज हीप है या नहीं, और कहां तक।

is_heap(heap.begin(), heap.end()) // bool
auto it = is_heap_until(heap.begin(), heap.end());
// [begin, it) हीप है

पूर्ण उदाहरण

#include 
using namespace std;
int main() {
    vector heap = {33, 43, 53, 38, 28};
    make_heap(heap.begin(), heap.end());
    cout << "Top: " << heap.front() << endl; // 53
    heap.push_back(60);
    push_heap(heap.begin(), heap.end());
    cout << "After insert: " << heap.front() << endl; // 60
    pop_heap(heap.begin(), heap.end());
    heap.pop_back();
    cout << "After delete: " << heap.front() << endl; // 53
    sort_heap(heap.begin(), heap.end());
    // अब सॉर्टेड: 28 33 38 43 53
}

नोट

यह आर्टिकल C++ के बारे में है, पायथन का नहीं। पायथन में heapq मॉड्यूल मिन-हीप प्रदान करता है।

  1. - C++ में STL का उपयोग करके ऐरे और वेक्टर्स के साथ काम करना

    ऐरे और वेक्टर्स प्रतिस्पर्धी प्रोग्रामिंग में समस्याओं को हल करने के लिए बहुत महत्वपूर्ण डेटा स्ट्रक्चर्स हैं। और C++ प्रोग्रामिंग में STL (स्टैंडर्ड टेम्पलेट लाइब्रेरी) ऐरे और वेक्टर्स पर ऑपरेशन करने के लिए कुछ फ़ंक्शन प्रदान करती है। आइए इनमें से कुछ फ़ंक्शन्स को एक्शन में देखें: ऐरे/वेक्टर का योग

  1. C++ STL में स्टैक (3.5) C++ STL में स्टैक (3.5)

    C++ STL में, स्टैक का उपयोग एक कंटेनर के रूप में किया जाता है जिसे LIFO संरचना के रूप में कार्यान्वित किया जाता है। LIFO का अर्थ है लास्ट इन फर्स्ट आउट। स्टैक को किताबों के ढेर के रूप में देखा जा सकता है जिसमें किताबें एक के ऊपर एक व्यवस्थित होती हैं और अंत में डाली गई किताब सबसे पहले हटाई जाएगी इसल

  1. C++ में बाइनोमियल हीप C++ में बाइनोमियल हीप

    बाइनोमियल हीप को बाइनरी हीप के विस्तार के रूप में परिभाषित किया गया है जो बाइनरी हीप द्वारा प्रदान किए गए अन्य ऑपरेशन्स के साथ तेज़ मर्ज या यूनियन ऑपरेशन प्रदान करता है।एक बाइनोमियल हीप को बाइनोमियल ट्रीज़ के संग्रह के रूप में माना जाता है।बाइनोमियल ट्री क्या है?k क्रम का एक बाइनोमियल ट्री k-1 क्रम