У меня есть std::vector
от GameObject
s. Я обращаюсь к этим GameObject
с помощью прямых указателей на них. (Не беспокойтесь о том, что указатели становятся недействительными, я обновляю указатели, когда сам vector
). Класс GameObject
имеет функцию, называемую load()
.Вызывает ли вызывающие функции элемент `std :: vector`, который перераспределяется во время вызова функции?
Итак, в одном случае я вызываю load()
экземпляра GameObject
, который хранится в пределах vector
. Эта функция подталкивает другой GameObject
в конце vector
. Это приводит к тому, что vector
исчерпает память и перераспределяет (или изменяет размер). Теперь, после этого звонка на push_back
возвращается, load()
не может получить доступ к любому из участников экземпляра GameObject
. Однако экземпляр все еще существует на одном и том же векторе.
Почему функция не может получить доступ к элементам? Элементы, видимые load
, содержат нежелательные/неправильные значения. Любые объяснения?
hmmm ... это что-то подумать. Мне придется использовать другой контейнер ... Просто спрашивайте, какие-нибудь идеи о том, что делать в этом случае? –
'std :: deque' также имеет O (1) произвольный доступ, но не перераспределяет. – MSalters
все хорошо! Большое спасибо! –