Silme işlevi, argüman olarak düzenli bir yineleyici almalıdır. Böyle bir yineleyici almak için, daha sonra yeni C++ 11 önceki işlevini kullanarak bir adım yedekler,
minheap.erase(std::prev(minheap.end()));
Bu amaçla bir yineleyici almak için ucu() çağrıları çağırarak deneyebilirsiniz. C++ 11 desteği yoksa bir min-yığın olarak Multimap kullanmaya çalışıyorsanız gibi görünüyor, çünkü alternatif olarak priority_queue kullanarak yerine kabul var, Alternatif
minheap.erase(--minheap.end());
yazabilir veya push_heap ve pop_heap gibi yığın algoritmaları?
DÜZENLEME: En takip soruya cevap vermek için, buraya iki farklı değerlere alıyoruz nedeni, Multimap'de son unsuru, önce değil bir adım bu mantıksal olarak rbegin puan bitiş noktaları ise Sonunda bir son. Sonunu bir adımda yedeklemek, rbegin ile aynı öğeye başvurur, bu nedenle bir adım ileriye doğru ilerlerseniz, son öğeden bir adım önce öğeye işaret eder.
Bu yardımcı olur umarız!
Düzenlemenizle ilgili olarak: '++ it1 'öğesine ihtiyacınız yok,' rbegin 'zaten son öğeye işaret ediyor. –
Oh, haklısın, üzgünüm, benim için geç oluyor: D – Cristy