相关疑难解决方法(0)

所有STL容器的通用哈希函数

std::unordered_map<key,value>在我的实现中使用了一个.我将使用任何STL容器作为关键.我想知道是否可以为正在使用的任何容器创建通用哈希函数.

SO中的这个问题为所有STL容器提供了通用打印功能.虽然你可以拥有它,为什么你不能像Hash函数那样定义一切?是的,一个重要的问题是它需要快速有效.

我正在考虑这样做转换的关键值一个简单的哈希函数size_t,做像一个简单的功能这个.

可以这样做吗?

PS:请不要使用boost库.谢谢.

c++ hash stl map c++11

11
推荐指数
1
解决办法
3654
查看次数

std :: hash模板部分特化

我用模板写了一些类:

 template <class T, class Allocator = ::std::allocator<T> >
 class my_list;
Run Code Online (Sandbox Code Playgroud)

我应该为这个类编写:: std :: hash specializtion.我怎样才能做到这一点?简单的部分专业化:

namespace std {
  template <class T, class Allocator>
      class hash<my_list<T, Allocator> >{
      public :
      size_t operator()(const my_list<T, Allocator> &x ) const{
          return ...;
      }
  };
}
Run Code Online (Sandbox Code Playgroud)

但我不能写简单的部分特化,因为它被C++ ISO禁止:

ISO/IEC 14882第三版2011-09-01

17.6.4.2.1命名空间std [namespace.std]

2如果C++程序声明了标准库类或类模板的任何成员类模板的显式或部分特化,则它的行为是未定义的.

我能做什么?

c++ templates std language-lawyer c++11

9
推荐指数
1
解决办法
1176
查看次数

标签 统计

c++ ×2

c++11 ×2

hash ×1

language-lawyer ×1

map ×1

std ×1

stl ×1

templates ×1