Я не совсем уверен, что этот вопрос действительно касается контейнеров, пожалуйста, несите меня.Какой контейнер выбрать?
Игра имеет «повороты», которые увеличиваются, и нет таймера, который срабатывает в определенное время.
Теперь есть также большое ведро объектов, где некоторые из них нуждаются в обновлении. Что будет происходить в том, что объект o1 должен быть обновлен в n1 поворотами, объект o2 в n2 и т.д.
Простое решение будет:
for (object* o : objectVector) {
o->ctr--;
if (o->ctr == 0) { o->update(); };
}
Теперь я чувствую, что это очень неэффективно, если я пролезть 1000 счетчики объектов каждый ход, чтобы обновить, возможно, 10 из них. Я уверен, что эта проблема возникла где-то раньше!
Кроме того, я могу, вероятно, позволить объектам иногда обновлять на +/- несколько оборотов вокруг ожидаемого обновления.
Я думал, что могу иметь много векторов, один для следующих 5, один для 5-10, один для 10-15 поворотов в будущем и так далее. Но тогда у меня слишком много векторов, если некоторые объекты нужно обновить только в 100 раз.
Меня больше беспокоит то, что код изменяет копии объектов, а не те, которые находятся в контейнере. – juanchopanza
Извините, это был просто псевдокод, чтобы проиллюстрировать эту идею, поэтому я сделаю ее более похожей на фактический код в моей программе. – Bersaelor
«Но тогда у меня слишком много векторов» - «слишком» много? Зачем? Кажется вполне нормально для меня. у вас может быть даже один за каждый ход. –