hash_map和unordered_map的可互换使用(C ++ 11)

时间:2016-04-07 08:41:00

标签: c++ c++11 stl hashmap unordered-map

从之前的帖子Difference between hash_map and unordered_map?中,我了解在先前的C ++ - 11中存在的hash_map是一种非标准的,并且已被标准的unordered_map替换为可互换的。但是,我有一些疑问。 早些时候(在C ++ 11之前),我们使用hash_map作为:

hash_map<string,string,shash,seq> some_hashmap;

其中shash和seq可以定义如下:

class shash {
  public:
    size_t operator()(const string &a) const {
      register size_t ret = 0;
      register string::const_iterator a,e;
      a = s.begin();
      e = s.end();
      for(;a != e;++a) {
        ret = (ret << 5) + (ret >> 2) + *a;
      }
      return(ret);
    }
  };
class seq {
  public:
    bool operator()(const string &str1,const string &str2) const {
      register const char *s1 = str1.c_str();
      register const char *s2 = str2.c_str();
      for(;*s1 && *s2 && *s1 == *s2;++s1,++s2);
      return(!*s1 && !*s2);
    }
 };

unordered_map(C ++ 11)可以在这里互换使用吗?或者,是否有更好的shash和seq替代方案,还是可以在unordered_map中省略它们?

0 个答案:

没有答案