是否可能初始化STL map
的大小?
我知道我的地图最终会有多少元素,并且我想在一开始就分配所有所需的内存。
是否可能初始化STL map
的大小?
我知道我的地图最终会有多少元素,并且我想在一开始就分配所有所需的内存。
您可以尝试使用带有statefull分配器的map。例如从Boost.Container或C++11中。或者,如果您接受非statefull分配器的限制,则甚至可以使用来自C++98/03的map。
考虑使用unordered_map(再次来自Boost或C++11)-它将buckets count作为构造函数参数。它与map不同,因为它基于哈希而不是基于严格弱排序。
另一个选择是来自Boost的flat_map。它有reserve成员函数。 flat map / set的说明:
Boost.Container flat_[multi]map/set容器是基于Austern和Alexandrescu指南的有序向量的关联容器
哪种选择更好-取决于您的使用模式。