gpt4 book ai didi

c++ - 固定大小的unordered_map,如何定义?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:57 58 4
gpt4 key购买 nike

是否可以定义一个固定大小的unordered_map

查看成员函数,没有类似std::vectorstd::listresize()。另外,谷歌没有帮助我。

最佳答案

是的,有可能,但STL中没有这样的 map 。你可以做的是编写你自己的包含 std::array< std::pair<Key, Value>, N> 的类。并提供大部分 find() , insert()使用 std::hash 的功能你自己。如果您使用 std::vector< std::pair<Key, Value> >作为数据成员,您甚至可以拥有 resize()函数只显式展开表,而不是在 insert() 之后隐式展开.

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

但是,您需要解决的一个问题是,如果您的数组已满,您使用哪种替换策略来替换项目。 std::unorderd_map使用所谓的链接,对于每个条目都有一个动态大小的 bucket (至少有前向迭代,所以至少等同于 forward_list )。大多数chess programs有一个固定大小的哈希表和一个替换策略,如果一个特定的表条目已经被占用,总是替换一个项目。

关于c++ - 固定大小的unordered_map,如何定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14417907/

58 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com