2011-05-10 26 views
10

Kopyaları yok saymak için std::priority_queue'u nasıl yapılandırabilirim?std :: priority_queue çiftlerini yoksaymak için nasıl yapılandırabilirim?

Zaten içerdiği bir anahtarı eklediğimde, bu yeni göz ardı edilmemelidir. (Benim durumumda, eski ve yenisinin önceliği her zaman tam olarak aynı olacaktır.)

Karmaşıklık açısından bir fark yaratmamalı: Uygun yere yerleştirmeye çalışacak, mevcut olanı bulmaya çalışacak. Orada ve hiçbir şey yapmayın. Soru, std::priority_queue'un bu şekilde yapılandırılabilir olması.

+2

ben bir yığın sanmıyorum O (log N) "Mevcut olanı bulmak" destekler. – kennytm

+0

@KennyTM, neyse ki, pinin bir yığın olması gerekmez ;-) – ltjax

+0

@KennyTM: Mevcut olanı bulmak için (not: yeni bir ile aynı öncelik), ilk önce ekin yerini O (log N) olarak buluruz. ve sonra o konumda mevcut anahtarı tanımlayın (O (log N) deki ikili arama). Ya da neyi özlüyorum? – Frank

cevap

İlgili konular