Bean(TM) Nuts Pinecone for C/CPP
HashMap/Set
摘要
HashMap参考STL unordered_map、JDK HashMap、PHP Array设计,为动态扩容、List/Tree 切换的架构,具有5个衍生子数据结构,HashSet、HashMap、LinkedHashMap、LinkedHashSet、Dictron,底层数据结构与算法基本类似,只不过对接口和API就行修改。
工程支持:支持迭代器(STL风格,兼容STL操作)、迭代器forEach适配器范式、支持运算符重载、内存安全无泄漏、支持对象模板、支持指定内存分配器、支持重写compare接口(C++风格),兼具C++、JDK双重风格。
预览
类定义
使用
性能 (比C++ unordered_map快,高冲突时内存消耗更多,因为存在树节点)
std::unordered_map: 1e6, 约260~300ms
LinkedHashMap: 1e6, 约180~210ms
HashMap: 1e6, 约210~240ms, 析构函数消耗较大
技术特性(优化特性)
与java不同,对List/Tree节点标记不采用instanceof(C++下是DynamicCast)这类方法,而使用枚举变量
节点替换时,对于List节点直接升级替换,而Tree节点只标记而不触发内存申请 (尚未完成的优化:超阈值回收)
Author:undefined Create time:2023-07-29 15:57
Last editor:undefined Update time:2023-07-29 19:23
Last editor:undefined Update time:2023-07-29 19:23