Использование библиотеки 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.