Использование библиотеки STL

Манипуляции с данными в векторах

Добавление данных в vector выполняется при помощи метода insert. У insert есть несколько форм.

vector<int> v;
...
// Добавить элемент со значением 42 
// непосредственно после первого элемента вектора
v.insert(v.begin() + 1, 42);

При выполнении такой операции:

-- вектор расширится на один элемент;

-- все элементы вектора, начиная со второго (индекс 1) по последний, сместятся вправо, освобождая место для нового элемента;;

-- новый элемент со значением 42 займёт своё место.

Если необходимо добавить много элементов в середину вектора, логично выполнить один сдвиг сразу на несколько элементов. Для этого используется интервальная форма insert: insert(iterator1 where, iterator2 what_begin, iterator2 what_end). При этом типы итераторов iterator1 и iterator2 могут не совпадать -- insert может, к примеру, вставить в vector содержимое контейнера set.

vector<int> v;
vector<int> v2;
...
// вставить содержимое v2 в обратном порядке в середину v
v.insert(v.begin() + (v.size()/2), v2.rbegin(), v2.rend());
Для удаления элементов из vector используется метод erase. У erase также есть две формы:
erase(iterator what);
erase(iterator from, iterator to);
Технология методов insert/erase так или иначе используется во всех типах контейнеров STL.