固定大小unordered_map,如何定义?

mah*_*ood 6 c++ unordered-map fixed-size-types

是否可以定义固定大小unordered_map

查看成员函数,没有resize()类似的std::vectorstd::list.此外,谷歌没有帮助我.

Tem*_*Rex 7

是的,这是可能的,但STL中没有这样的地图.你可以做的是写自己的类包含std::array< std::pair<Key, Value>, N>并提供最的find(),insert()使用功能std::hash自己.如果你使用std::vector< std::pair<Key, Value> >as数据成员,你甚至可以有一个resize()函数只显式扩展表,但不能隐式地扩展表insert().

要意识到的一件重要事情是,您还需要提供一种迭代各种元素的方法,以满足所有容器需求.通常,这通过具有在所有存储元素上实现链表的辅助数据来完成.

但是,您需要解决的一个问题是,如果阵列已满,则使用哪个替换策略来替换项目.在std::unorderd_map使用所谓的链接中,与每个-对于入门级动态分级的(至少有向前迭代,所以至少相当于forward_list).大多数国际象棋程序都有一个固定大小的哈希表,其中包含替换策略,以便在特定表条目已被占用时始终替换项目.