std::vector::begin
возвращает итератор. Итератор - это обобщение указателя - это тип, который можно использовать для доступа к элементам контейнера. Каждый контейнер имеет свой собственный тип итератора. То, как именно представлены итераторы, является деталью реализации, вам, как программисту, следует заботиться только об их интерфейсе (и о гарантиях, которые они дают, о стабильности, валидности и т. Д. См. подходящую документацию для получения дополнительной информации).
Различные типы итераторов поддерживают разные операции: некоторые могут быть только увеличены (могут только двигаться вперед), некоторые также могут быть уменьшены (двигаться назад); некоторые должны двигаться по одному шагу за раз, некоторые могут перемещаться несколькими элементами за один раз; и т.д.
Итераторы, предоставляемые std::vector
, являются произвольными и непрерывными, поэтому они функционируют почти так же, как указатели.
Для пустого std::vector
вызов begin()
даст вам тот же итератор, который возвращается при вызове end()
. end()
всегда возвращает специальный, последний конец итератор. Этот итератор не является разыменованным (он не указывает ни на какой элемент), он просто служит индикатором конца контейнера.