gcc的boost :: unordered_map支持

时间:2010-04-28 19:29:07

标签: gcc boost unordered-map

当将unoreded_map支持添加到gcc?

我正在使用RHEL 5.3附带的gcc 4.1.1。 看起来缺少unoreded_map。有没有办法手动添加它?

2 个答案:

答案 0 :(得分:8)

gcc没有boost::unordered_map - 它是Boost的一部分。它有std::tr1::unordered_map。它至少从4.0开始包含在内。

要使用std::tr1::unordered_map,请添加此标题:

#include <tr1/unordered_map>

boost::unordered_mapstd::tr1::unordered_map的界面应该相似,因为后者是从前者创建的。

答案 1 :(得分:2)

在较旧的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 ]++;

...

我经常使用并且成功使用。

此致

RBO