【发布时间】:2016-11-22 01:04:22
【问题描述】:
这适用于将我的向量长度保持在我选择的max_size 之下,并且我无法通过我的测试使其中断,但是限制向量大小的方法安全吗?
if (vector.size() >= max_size) {
vector.erase(vector.begin());
}
它用于撤销/重做状态,所以我只想在内存中保留有限数量的状态。
【问题讨论】:
-
只要你只有一个线程,一次添加多个项目是不可能的,而且你在迭代时不要这样做,是的。题外话:考虑使用
std::dequeinstead. 这个用途应该有更好的性能,但不会是连续内存。 -
见boost::circular_buffer。正如一个答案已经指出的那样,您所描述的是一个 ring 或 circular buffer,即使您不知道它也是如此。
-
好的,谢谢,我会研究这些选项。这是一个相当小的集合,有 50 个 8 字节类型,并且以用户点击输入的最大速度访问,但如果可以的话,优化可能是一个好习惯。
标签: c++ vector data-structures