当前位置:  开发笔记 > 编程语言 > 正文

如何为自定义类型扩展std :: tr1 :: hash?

如何解决《如何为自定义类型扩展std::tr1::hash?》经验,为你挑选了1个好方法。

如何允许STL实现获取我的自定义类型?在MSVC上,有一个类std::tr1::hash,我可以通过使用来部分专门化

namespace std 
{
    namespace tr1 
    { 
        template <> 
        struct hash 
        { ... };
    } 
}

但这是推荐的方式吗?此外,这是否也适用于GCC的实施?因为boost::hash,它足以提供免费功能size_t hash_value (const MyType&),是否有类似的TR1实现?



1> philsquared..:

我试图找出使用无序关联容器(也使用GCC,正如OP所要求的)执行此操作的确切语法并点击此问题.

不幸的是,它没有达到我想要的细节水平.通过查看gcc标头如何实现标准哈希函数,我得到了它的工作.鉴于在网络上缺乏示例(至少在撰写本文时),我认为这将是发布我自己的示例(我可以确认与GCC合作)的好地方:

namespace std { namespace tr1
{
   template <>
   struct hash : public unary_function
   {
       size_t operator()(const MyType& v) const
       {
           return /* my hash algorithm */;
       }
   };
}}

(注意这里两个命名空间 - 这只是我对折叠嵌套命名空间的约定)

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有