使用什么数据结构

Meg*_*ron 3 c++ boost data-structures

我正在为这种情况寻找合适的数据结构.我有提升可用.

代码最初是在C#中,我在那里使用了一个队列,但我不认为这是一个合适的选择,据我所知,C#的队列没有C++等价物.我正在查看以下属性的频率/重要性:

  • 需要快速迭代
  • 需要能够快速推进结构(即当我从顶部拉出一个元素时,下一个元素应该是结构头)
  • 偶尔会被清除,然后完全重新填充
  • 偶尔会复制
  • 不需要对元素进行排序,因为元素将以正确的顺序添加

元素的数量在创建时将是已知的,并且将是50到200个元素.结构永远不会超过这个,但可能偶尔保持较少

我正在考虑使用std :: list,但是需要清除然后偶尔重新填充,这似乎不是一个好的选择.当我创建一个固定大小的列表,然后清除它,它失去了前缀大小不是吗?是否有一些方法可以始终保持列表大小,以便它不必释放/分配内存?

我知道boost有一个队列数据结构,但它不可迭代,我不确定它是否会遇到同样的问题 std::list

关于如何适应std::list我的问题或更合适的数据结构的一些建议会有所帮助.

Joh*_*web 10

std::deque 似乎满足了你的所有要求.

如果性能是你真正的问题,您应该阅读GMAN的回答对C++ STL队列预分配空间.

  • @Downvoter:请解释这个答案的错误. (5认同)