我在 c++03 中有一个项目存在数据结构问题:即使我必须不断地 pop_front-push_back,我也使用向量而不是列表。但是现在还可以,因为我现在需要重写太多代码。
我的方法是总是更新最后一个 frame_size 点的缓冲区。所以每一帧我都必须向前弹出并向后推。(也许这种方法有一个名字?)
所以我使用这段代码:
Point apoint; // allocate new point
apoint.x = xx;
apoint.y = yy;
int size = points.size()
if (size > frame_size) {
this->points.erase( points.begin() ); // pop_front
}
this->points.push_back(apoint);
我有一些用于对象池的现成代码,所以我想:这不是一个很好的优化,但我可以将前端存储在池中,这样我就可以获得 apoint 的分配时间。
好的,这不是那么有用,可能没有意义,但我只是出于教育的好奇心:我该怎么做?
如何存储向量的已擦除元素的内存以重用它?这个问题有意义吗?如果不是,为什么?
.. 因为擦除不返回擦除的向量,它返回:
一个随机访问迭代器,指向函数调用擦除的最后一个元素之后的元素的新位置,如果操作擦除了序列中的最后一个元素,则该位置是向量结束。