18#ifndef BIMHOMEBASE_LINKEDHASHMAP_H
19#define BIMHOMEBASE_LINKEDHASHMAP_H
36 template <
class KeyType,
class MappedType,
37 class Hash = std::hash<KeyType>,
38 class Pred = std::equal_to<KeyType> >
43 typedef std::pair<const KeyType, MappedType>
EntryType;
44 typedef typename std::list<EntryType>::iterator
iterator;
70 return std::pair<iterator, bool>(--
_values.end(),
true);
87 _it =
_values.insert(it, new_entry);
91 _it =
_values.insert(it, new_entry);
92 _map_key2entry.insert(std::pair<KeyType, iterator>(new_entry.first, _it));
233 return find(key)->second;
247 typedef std::unordered_map<KeyType, iterator, Hash, Pred>
HashMap;
HashMap _map_key2entry
保存 key 到 entry 的 hashmap
Definition LinkedHashMap.h:253
iterator find(const KeyType &key)
在 map 中查找元素,如存在则返回其迭代器,否则返回 end()
Definition LinkedHashMap.h:133
std::list< EntryType > _values
实际存放 entry 的双向链表
Definition LinkedHashMap.h:252
const_iterator find(const KeyType &key) const
find() 的 const 版本
Definition LinkedHashMap.h:154
std::pair< const KeyType, MappedType > EntryType
保存的 entry 的类型
Definition LinkedHashMap.h:43
size_t size() const
返回 entries 的数量
Definition LinkedHashMap.h:216
const_iterator begin() const
获取首元素的 const 迭代器
Definition LinkedHashMap.h:111
size_t _size
entry 的数量/O
Definition LinkedHashMap.h:251
bool empty() const
获取该 map 是否为空
Definition LinkedHashMap.h:223
std::list< EntryType >::iterator iterator
list 中的非 const 迭代器类型
Definition LinkedHashMap.h:44
std::list< EntryType >::const_iterator const_iterator
list 中的 const 迭代器类型
Definition LinkedHashMap.h:45
HashMap::iterator _map_itr
哈希表迭代器类型
Definition LinkedHashMap.h:248
HashMap::const_iterator _map_citr
哈希表const迭代器类型
Definition LinkedHashMap.h:249
iterator insert(const_iterator it, const EntryType &new_entry)
在 map 中指定位置插入一个新 entry
Definition LinkedHashMap.h:80
void erase(const KeyType &key)
移除指定键值的 entry
Definition LinkedHashMap.h:190
void clear()
清空所有 entry
Definition LinkedHashMap.h:204
iterator end()
获取尾元素的迭代器
Definition LinkedHashMap.h:118
const_iterator end() const
获取尾元素的 const 迭代器
Definition LinkedHashMap.h:125
void erase(iterator pos)
移除位于 pos 处的 entry
Definition LinkedHashMap.h:174
std::unordered_map< KeyType, iterator, Hash, Pred > HashMap
用于存储键到迭代器映射的哈希表
Definition LinkedHashMap.h:247
std::pair< iterator, bool > insert(const EntryType &new_entry)
在 map 中插入一个新 entry
Definition LinkedHashMap.h:55
iterator begin()
获取首元素的迭代器
Definition LinkedHashMap.h:104
MappedType & operator[](const KeyType &key)
[] 运算符重载
Definition LinkedHashMap.h:231
bool operator==(const LinkedHashMap &linkedHashMap)
== 运算符重载
Definition LinkedHashMap.h:241
链式哈希映射表
Definition LinkedHashMap.h:40
Definition BaseFigureFactory.h:24