В моем проекте на C ++ я использую vector
для хранения кучи struct
, которые содержат ряд элементов для простой игры (например, крестики-нолики, координаты, x
против o
и т. Д.). то есть:
struct gameMove
{
int x;
int y;
int player;
int order;
};
Каждый раз в течение одной игры, всякий раз, когда игрок делает ход (т. Е. Ставит x
или o
), информация сохраняется в vector
через push_back()
, чтобы создать функцию «отменить», которая в настоящее время работает должным образом.
В некоторых частях моей логики отмены / повтора я использую функции, которые проходят через vector
, находят соответствующий элемент и возвращают указатель непосредственно на этот элемент.
Насколько это безопасно, если я правильно управляю vector
, обращаюсь к нему, убираю NULL все указатели, указывающие на элементы vector
, или есть неотъемлемые риски? Меня беспокоит то, что если расширить игру, что я планирую сделать (то есть: использовать тот же код для шахматной партии, над которой я работаю), и что vector
становится слишком большим и его необходимо автоматически перераспределить, указатели станет недействительным (то есть: весь список перемещен в новый непрерывный блок, который может вместить все элементы), или существует ли какой-то тип интерфейса интеллектуального указателя на vector
для выполнения того же самого?
Спасибо.