[英]Which STL container best meets these needs?
我想就哪个STL容器最符合以下需求提出一些建议:
不需要螺纹安全。
这是我的想法:
list:需要为每个元素单独分配。 更昂贵的遍历。
vector:需要在集合增长时重新分配。 最好的排序和遍历性能。
deque:分配比列表少,重新分配少于向量。 我不知道有关排序的行为。
我目前正在使用列表。 在哪种情况下我使用特定的STL容器的流程图? 引领我走向deque。
我对STL的了解很早; 我不知道自2003年以来添加的容器类型,所以也许有一些我从未听说过的适合的东西。
std::vector<T*>
将根据讨论的要点获胜。
不要害怕需要调整大小 - 只需reserve()
一个合理的数量(如果你的许多收藏品都在那里,那就说500)。
使用vector<T*>
对性能进行排序也非常好。
每个T
分配和释放都很重要。 注意这一点。 例如,您可能希望一次分配数千个T
s,以减少内存分配开销(并使其更快地在最后解除分配所有内容)。 这被称为“竞技场”或“游泳池”。 您可以将32位相对指针存储到竞技场中,从而节省一半的指针存储空间。
当然,如果T
很小,你可以考虑按值而不是指针存储它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.