#qt #pointers #vector
#qt #указатели #вектор
Вопрос:
Мне интересно, что происходит, когда я удаляю элемент QVector?
- Удаляется ли он автоматически из QVector?
- Должен ли я удалять его вручную?
Кроме того, как я могу узнать индекс итерации итератора?
С наилучшими пожеланиями
Ответ №1:
Если у вас есть QVector<Thing*>
и delete
один из Thing
сохраненных в нем элементов, он не будет автоматически удален из вектора. Вам нужно сделать это самостоятельно.
Насколько я знаю, и из того, что я прочитал в документах, ни у QVector
одного итератора нет способа определить, по какому индексу он расположен.
Но если у вас есть ссылка на сам вектор (или, по крайней мере, на его begin()
итератор), вы можете использовать:
int position = iter - v.begin();
Комментарии:
1. Итак, я должен перебирать элементы с помощью цикла for или аналогичного. Спасибо за ваш ответ.
2. это один из способов сделать это. зависит от того, что вам нужно на самом деле.
3. Если у вас есть итератор STL iter, вы можете просто использовать iter-v.begin() для вычисления индекса элемента, на который указывает iter.
4. @Christian: спасибо, всегда забывай об этом. Итераторы Qt это тоже поддерживают.