Ну, последний элемент вектора не *history_.end()
, это history_.back()
.
Теперь, если position
действительно указывает позицию, вы должны позволить ей достичь 0. Если это, однако, подсчет количества предметов, вы должны вместо этого переименовать ее в count
или size
.
Поскольку вектор уже включает средства для проверки, когда он пуст, вы даже можете отказаться от своего пользовательского счетчика и не беспокоиться о том, должен ли он достигать 0 или нет:
while(!history.empty()) {
delete history_.back();
history_.pop_back();
}
Но так как вы на самом деле очищаете весь вектор, нет необходимости вставлять по одному элементу за раз. Вы можете перебирать вектор, удалять их, а затем clear()
вектор сразу.
for(size_t i = 0; i < history_.size(); ++i) {
delete history[i];
}
history_.clear();
Или в C ++ 11:
for(auto ptr : history_) {
delete ptr;
}
history_.clear();