@ rsjaffe прав, вы должны использовать iterator
.
Но, кроме того, вы используете объекты.
Эти объекты имеют некоторую ответственность, а именно хранят вещи с некоторыми гарантиями.
Неопределенно:
- быстрый доступ для чтения / записи к элементам для
std::vector
- автоматической сортировки и сохранение одного при вставке для
std::set
(и относительно быстрая вставкаи получение ...) - быстрая вставка / удаление для
std::list
Цель этих классов состоит в том, чтобы эти понятия работали и в то же время скрывали свои внутренниеработает.
Аналогично, у вас есть хороший пульт с красивыми кнопками, но вы не можете знать, как они работают, и производитель не дает никаких гарантий, что он будет работать так же со временем.Вы просто знаете, что это работает (или вы можете проверить это, если хотите).
Точно так же, Iterators
это вещи , которые инкапсулируют трансверсальные коллекции .
Нет такой вещи, как указатель на голову в std::set
, потому что элементы не сохраняются таким образом.
В этой перспективе приведениеstd::vector::iterator
к указателю работает случайно , и вопрос не имеет значения.