поддержка boost :: unordered_map от gcc - PullRequest
0 голосов
/ 28 апреля 2010

Когда была добавлена ​​поддержка unoreded_map в gcc?

Я использую gcc 4.1.1, поставляемый с RHEL 5.3. Похоже, unoreded_map отсутствует. Есть ли способ добавить его вручную?

Ответы [ 2 ]

8 голосов
/ 28 апреля 2010

gcc не имеет boost::unordered_map - это часть Boost . Имеет std::tr1::unordered_map. Включено как минимум с 4.0.

Чтобы использовать std::tr1::unordered_map, включите этот заголовок:

#include <tr1/unordered_map>

Интерфейс boost::unordered_map и std::tr1::unordered_map должен быть похожим, так как последний создается из первого.

2 голосов
/ 28 апреля 2010

В старых версиях gcc вы также можете использовать hash_map, который может быть «достаточно хорошим».

#include <ext/hash_map> // Gnu gcc specific!
...

// allow the gnu hash_map to work on std::string
namespace __gnu_cxx {
   template<> struct hash< std::string > {
      size_t operator()(const std::string& s) const {
         return hash< const char* >()( s.c_str() );
      }
   }; /* gcc.gnu.org/ml/libstdc++/2002-04/msg00107.html */
}

// this is what we would love to have:
typedef __gnu_cxx::hash_map<std::string, int> Hash;
....

и позже

Hash hash;
string this_string;

...

hash[ this_string ]++;

...

, который я использовал часто и с успехом.

Привет

БВУ

...