gpt4 book ai didi

c++ - 初始化 STL `map` 大小

转载 作者:可可西里 更新时间:2023-11-01 17:38:16 28 4
gpt4 key购买 nike

是否可以初始化 STL map 大小?

我知道我的 map 最后会有多少元素,我想在一开始就分配所有需要的内存。

最佳答案

有几个选项:

  • 您可以尝试将 map 与有状态分配器一起使用。例如来自 Boost.Container或者来自 C++11。或者,如果您接受无状态分配器的限制,那么您甚至可以使用 C++98/03 中的映射。

  • 考虑使用 unordered_map(同样来自 Boost 或来自 C++11)——它将桶计数作为构造函数参数。它与 map 的不同之处在于它基于散列而不是严格的弱排序。

  • 另一个选项是来自 Boost 的 flat_map .它具有reserve成员函数。 Description平面图/集:

Boost.Container flat_[multi]map/set containers are ordered-vector based associative containers based on Austern's and Alexandrescu's guidelines

  • 或者,如果 boost 不可用——那么您可以简单地使用 std::vector + std::sort + std::lower_bound(或将它们包装到类似类的小型 flat_map 中)。 IE。只需将您的元素放入 vector (无序),然后对其进行排序,然后 - 当您需要按键查询元素时 - 只需使用 lower_bound。

哪种选择更好 - 取决于您的使用模式。

关于c++ - 初始化 STL `map` 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13300482/

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