2013-11-28 9 views
5

class stuff{ int id; int ammount; int quality; /*...*/ }; demek ve ben vector<stuff> items var. Ben staff::id benim toplama stuff::id olarak sıralanabilir ve aranabilir yapmak istiyorum. Find_if ile yapabilirdim ve bazı özel stl lambda tabanlı fonksiyon kullanarak sıralayabilirim. Yine de tüm bunları varsayılan olarak vektöre sahip olmak istiyorum. Ben Peki varsayılan vektör fonksiyonları ile vektör içine sınıf/sıralanabilir aranabilir hale getirmek için ... ama ben bulamadım her yerinde arandı karma işlevi oluşturmak için bazı yol var duydu? sıralama içinVektörün içinde sınıfın nasıl sıralanabilir hale getirilmesi gerekir? Bir sınıf olması

+0

'id malzeme :: operatörü tanımlayın. –

+1

Bunun yerine std :: map 'yi kullanabilir misiniz? Burada – Nawaz

+0

Nokta 'tüm benim iş mantığı ile tanımlanan sınıfı tarafından temel konteynerler için arama yapması için,' çifti :: first' map' olarak da benim sınıfını kullanın edebilmek için gibi işlemler nasıl elde etmektir - Genel değil ints ve Teller. – DuckQueen

cevap

6

, iki yapılarını karşılaştıran bir operator< uygulamak:

bool operator<(const stuff& s1, const stuff& s2) 
{ 
    // Your comparison here 
} 

Bu, tüm sıralama çoğu için varsayılan olarak kullanılır operatörüdür.

eşitlik denetimi için benzer bir operator== oluşturun.

İlgili konular