में फाइबोनैकी ढेर के लिए फ़ंक्शन की तुलना परिभाषित करना मुझे अपनी परियोजना में फिबोनाची ढेर का उपयोग करने की आवश्यकता है और मैं इसे बूस्ट लाइब्रेरी से उपयोग करने का प्रयास कर रहा हूं। लेकिन मैं समझ नहीं सकता कि उपयोगकर्ता द्वारा मनमाने ढंग से डेटा प्रकार के लिए परिभाषित तुलना फ़ंक्शन को कैसे स्थापित किया जाए। मैं इस प्रकार struct नोड परिभाषित के लिए एक मिनट ढेर का निर्माण करने की जरूरत है:बूस्ट
struct node
{
int id;
int weight;
struct node* next;
/* dist is a global array of integers */
bool operator > (struct node b) //Boost generates a Max-heap. What I need is a min-heap.
{return dist[id] < dist[b.id] ? 1:0 ;} //That's why "<" is used for "operator >".
bool operator < (struct node b)
{return dist[id] > dist[b.id] ? 1:0 ;}
bool operator >=(struct node b)
{return dist[id] <= dist[b.id] ? 1:0 ;}
bool operator <=(struct node b)
{return dist[id] >= dist[b.id] ? 1:0 ;}
node()
{
id=0;
weight=0;
next=NULL;
}
};
मैं प्रलेखन ऊपर देखा और एक तुलना वर्ग नहीं था। लेकिन इसमें कोई तत्व नहीं था। कृपया मुझे बताएं कि उपयोगकर्ता परिभाषित तुलना फ़ंक्शन को कैसे सेट अप करें। अग्रिम धन्यवाद।
आपने यह निर्दिष्ट कैसे किया कि तुलनात्मक से कम या उससे अधिक के लिए उस ऑपरेटर का उपयोग करना है या नहीं? मेरा मतलब है, आपने ">" के बजाय "<" का उपयोग करने का निर्णय कैसे लिया? विकल्प बदल जाएगा कि ढेर न्यूनतम ढेर या अधिकतम ढेर सही है? – cauthon14
@ user2011038 हां, यह इसे बदल देगा। मैंने इसे '>' में संशोधित किया ताकि यह आपको एक न्यूनतम ढेर देगा। – Yuushi