2010-01-13 19 views
11

Ben bir anahtar olarak ikili veriler kullanılarak bir işaretçi arama için STL? Harita kabını kullanmak istiyorum bu yüzden bu özel fonksiyon nesnesi yazdı:STL Harita karşılaştırmak fonksiyon nesne

map<unsigned char *, void *, my_cmp> mymap; 

Bu derler ve iş gibi görünüyor, ancak bir "işaretsiz karakter * const &" tipi ne olduğundan emin değilim ve sadece "imzasız char *" ile işe yaramadı neden?

+17

'dönüş memcmp (a, b, 4) <0;' –

cevap

8

Geçirilen değerlerin değiştirilmemesini garantileyen bir karşılaştırıcı sağlamanız gerekir, dolayısıyla const (bu, işaretçisinin işaretçisine değil) olduğunu unutmayın. Referans operatörüne gelince (&), buna ihtiyacınız yok - isteğe bağlıdır. Bu aynı zamanda derlenir: Bu sadece unsigned char * ile benim için çalışıyor

struct my_cmp 
{ 
    bool operator() (unsigned char * const a, unsigned char * const b) 
    { 
     return memcmp(a,b,4) < 0; 
    } 
}; 
1

.