Projemde Fibonacci yığınını kullanmalıyım ve bunu destek kitaplığından kullanmaya çalışıyorum. Ancak, rasgele veri türü için kullanıcı tanımlı karşılaştırma işlevinin nasıl kurulacağını anlayamıyorum. Aşağıdaki gibi tanımlanan yapı düğüm için bir dakika yığın oluşturmak için gereken:Boynun içinde fibonacci yığınını karşılaştırma işlevini tanımla
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;
}
};
I belgeleri aranır ve bir karşılaştırma sınıf yoktu. Ama hiçbir şey içermiyordu. Lütfen kullanıcı tanımlı karşılaştırma fonksiyonunu nasıl kurduğumu söyle. Önceden teşekkür ederiz. operator()
-
Bu operatörü, karşılaştırmadan daha az mı yoksa büyük mı kullanacağınızı nasıl belirttiniz? Demek istediğim, ">" yerine "<" kullanmayı nasıl karar verdin? Seçim, yığının en az yığın veya maksimum yığın olup olmadığını değiştirecek? – cauthon14
@ user2011038 Evet, değiştirir. Bunu değiştirdim, böylece bu size bir min-yığın verecek. – Yuushi