当将unoreded_map支持添加到gcc?
时我正在使用RHEL 5.3附带的gcc 4.1.1。 看起来缺少unoreded_map。有没有办法手动添加它?
答案 0 :(得分:8)
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
的界面应该相似,因为后者是从前者创建的。
答案 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