Вставка с использованием метода insert
происходит всегда перед указанным итератором, поэтому для вставки в первую позицию (т. Е. * Перед * текущим первым элементом) используйте:
v.insert(v.begin(), p);
(параметр count
можно опустить, если вы вставляете только один элемент).
Вставка в последнюю позицию может быть выполнена с помощью итератора end()
, например
v.insert(v.end(), p);
или, в случае векторов, используя push_back()
как
v.push_back(p);
Для доступа к векторам вы можете использовать только неотрицательные индексы, т. Е. v[-1]
недействительно.
Также вы не можете назначить целое число для итератора, главным образом потому, что итератор инкапсулирует и позицию и контейнера, к которому он обращается. Если вы хотите «построить» итератор для указанной позиции, используйте такие дополнения, как:
std::vector<int> it = v.begin() + index;
(Обратите внимание, что добавление к итераторам работает только для так называемых итераторов с произвольным доступом , поэтому оно зависит от типа контейнера.)