加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – 创建通用哈希表 – C.

发布时间:2020-12-16 06:46:30 所属栏目:百科 来源:网络整理
导读:.NET框架有一个Dictionary TKey,TValue实现为哈希表并在恒定时间内提供数据检索的类(O(1)).我在C中寻找类似的实现.我知道std :: map但是在这个数据检索中需要对数时间.在C中是否有任何好的哈希表实现将在恒定时间内检索数据? 如果我自己编写,我将如何计算密
.NET框架有一个Dictionary< TKey,TValue>实现为哈希表并在恒定时间内提供数据检索的类(O(1)).我在C中寻找类似的实现.我知道std :: map但是在这个数据检索中需要对数时间.在C中是否有任何好的哈希表实现将在恒定时间内检索数据?

如果我自己编写,我将如何计算密钥的哈希码?和.NET一样,我想过在类型上使用GetHashCode()方法.

template<typename TKey,typename TVal>
class Dictionary
{
public:
   void Add(TKey key,TVal val){
       int hashCode = key.GetHashCode();
       /* .... */
   }
}

如果我喜欢上述内容并且给定的键类型没有GetHashCode()方法,编译器将抛出错误.但是当key是基本类型(如int)时,此方法将不起作用.我可能需要通过提供GetHashCode来为int编写包装器.

我想知道实现这个的C方式是什么?

有什么想法吗?

解决方法

另外,如果需要严格遵守C标准,请查看 C++ Technical Report 1 for std :: tr1 :: unordered_map.

实际上std :: hash_map不是C标准,但无论如何都被广泛使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读