Когда метод push_back вектора называется предыдущим объектом в векторе, он уничтожается. Что может быть причиной этого.
Причина в том, что std::vector
указан таким образом.
Когда вы продолжаете добавлять элементы к вектору, в какой-то момент его объем памяти исчерпан. Затем он выделяет новый резерв памяти, копирует туда весь старый объект (плюс тот, который вы добавляете, когда это происходит), и уничтожает старые объекты.
std::vector
пытается минимизировать это путем «чрезмерного выделения», он выделяет больше памяти, чем требуется, чтобы ожидать дальнейшего роста. (Ищите capacity()
против size()
и reserve()
против resize()
, чтобы узнать больше об этом.) Но каждый резерв может быть в какой-то момент превышен, а затем он должен перераспределить и скопировать.
Если вы не хотите этого, взгляните на std::deque
из std::list
.
Некоторые коды, пожалуйста. Векторы обычно этого не делают, поэтому необходим какой-то контекст, прежде чем кто-нибудь сможет вам помочь. –
@Marcelos отредактировал запрос с кодом – boom
В будущем выделите свой код и нажмите кнопку '101010', чтобы отформатировать его правильно. –