我正在寻找适合这种情况的数据结构。我可以使用boost。
原来的代码是用C#写的,我在那里使用了一个队列,但我认为那不是一个合适的选择,而且据我所知,在C++中没有与C#的队列相当的东西。以下是我考虑的属性:
- 需要快速迭代 - 需要能够快速推进结构(即当我从顶部取出一个元素时,下一个元素应该是结构头) - 偶尔会被清空然后完全重新填充 - 偶尔会被复制 - 不需要排序,因为元素将按正确的顺序添加
元素数量将在创建时确定,并且将是50到200个元素。该结构永远不会容纳超过这个数量,但偶尔可能容纳更少。
我考虑使用std::list,但由于需要偶尔清除并重新填充,这似乎不是一个好选择。当我创建一个固定大小的列表,然后清除它时,它会失去预设大小,对吗?有什么办法可以始终保持列表大小,以便它不必分配/释放内存?
我知道boost有一个队列数据结构,但它不能迭代,我不确定它是否会和std::list一样有问题。
如何将std::list适应我的问题或更合适的数据结构的一些建议将是有帮助的。
原来的代码是用C#写的,我在那里使用了一个队列,但我认为那不是一个合适的选择,而且据我所知,在C++中没有与C#的队列相当的东西。以下是我考虑的属性:
- 需要快速迭代 - 需要能够快速推进结构(即当我从顶部取出一个元素时,下一个元素应该是结构头) - 偶尔会被清空然后完全重新填充 - 偶尔会被复制 - 不需要排序,因为元素将按正确的顺序添加
元素数量将在创建时确定,并且将是50到200个元素。该结构永远不会容纳超过这个数量,但偶尔可能容纳更少。
我考虑使用std::list,但由于需要偶尔清除并重新填充,这似乎不是一个好选择。当我创建一个固定大小的列表,然后清除它时,它会失去预设大小,对吗?有什么办法可以始终保持列表大小,以便它不必分配/释放内存?
我知道boost有一个队列数据结构,但它不能迭代,我不确定它是否会和std::list一样有问题。
如何将std::list适应我的问题或更合适的数据结构的一些建议将是有帮助的。