У меня есть проект на 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);
У меня есть некоторый готовый код для пула объектов, и поэтому я подумал:это не очень хорошая оптимизация, но я могу хранить фронт в пуле, и поэтому я могу получить время выделения точки.
хорошо, это не так полезно, и, вероятно, это не имеет смысла, но я прошу только для образованиялюбопытство: как я могу это сделать?
как мне сохранить память стертого элемента вектора для его повторного использования ?имеет ли этот вопрос смысл?если нет, то почему?
.. потому что стирание не возвращает стертый вектор, оно возвращает:
Итератор произвольного доступа, указывающий на новое местоположение элемента, который следовал за последнимэлемент, стертый при вызове функции, то есть конец вектора, если операция стерла последний элемент в последовательности.