繁体   English   中英

哪种STL容器最能满足这些需求?

[英]Which STL container best meets these needs?

我想就哪个STL容器最符合以下需求提出一些建议:

  1. 该系列的寿命相对较短。
  2. 该集合包含指针。
  3. 元素仅在末尾添加。 必须保持元素的顺序。
  4. 元素的数量是未知的,可能从数百到数百万不等。 只有在添加最终元素后才能知道该数字。
  5. 我可能会多次迭代这些元素。
  6. 添加完所有元素后,我需要根据指针引用的对象对集合进行排序。
  7. 排序后,我可能会多次迭代这些元素。
  8. 之后,该集合将被销毁。

不需要螺纹安全。

这是我的想法:
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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM