.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标准,但无论如何都被广泛使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |