2011-02-09 29 views

cevap

12

MacOSX'te, <hash_map> değil <ext/hash_map> doğru üstbilgi bulunmaktadır. İşte iyi çalıştı:

#if defined __GNUC__ || defined __APPLE__ 
#include <ext/hash_map> 
#else 
#include <hash_map> 
#endif 

int main() 
{ 
     using namespace __gnu_cxx; 

     hash_map<int, int> map; 
} 

arada, <tr1/unordered_map> kullanmayı tercih ediyorum.

+0

Hala "h hash_map’ bu kapsamda açıklanmadı "kılavuzunuzu izledikten sonra. –

+0

'' namespace __gnu_cxx; 'veya' __gnu_cxx :: hash_map 'kullanarak mı kullandınız? –

+0

Teşekkür ederim. çözüldü. –

5

<hash_map> başlığı, C++ standardının bir parçası değildir ve derleyiciye özgü bir uygulamadır. Herhangi bir sistemde bulabileceğinizden veya her sistemde ortaya çıkan çeşitli uygulamaların birbiriyle karşılıklı olarak uyumlu olacağına dair bir garanti yoktur.

C++'daki bir hash haritasını kullanmak isterseniz, boost::unordered_map, tr1::unordered_map veya C++ 0x derleyicisinin std::unordered_map numaralı bir prototipini incelemek isteyebilirsiniz. Bu uygulamalar, ISO veya Boost topluluğu tarafından oldukça standart hale getirilmiştir ve çoğu C++ derleyicisine kolayca yüklenebilir. Sadece "bu kodu farklı bir kütüphane kullanarak yeniden yaz" diyebileceğimi birazcık hayal ettiğimi biliyorum, ama C++ 'nın bu formun karma kaplarını elde etmek üzere olduğu göz önünde bulundurulduğunda, muhtemelen değerli bir yatırım.