Ці методи, відповідно, вставляють і видаляють дані при звертанні до довільної позиції контейнера. Їх не рекомендується використовувати з векторами, оскільки при кожній вставці чи видаленні доводиться перекроювати всю структуру – розширювати чи стискати вектор. Тим не менше, коли швидкість не відіграє особливої ролі, використовувати ці методи можна і потрібно. Наступний приклад показує, як це робиться.
#include<iostream>
#include<vector>
#include <conio>
using namespace std;
int main()
{int arr[]={100,110,120,130};
int j;
vector<int>v(arr,arr+4); //ініціалізувати вектор масивом
cout<<"\nPered vstavkou: ";
for(j=0;j<v.size();j++)
cout<<v[j]<<' ';
v.insert(v.begin()+2,115); //вставити 115 в позицію 2
cout<<"\nPisla vstavky: ";
for(j=0;j<v.size();j++)
cout<<v[j]<<' ';
v.erase(v.begin()+2); //видалити елемент з 2-ї позиції
cout<<"\nPisla vydalenna: ";
for(j=0;j<v.size();j++)
cout<<v[j]<<' ';
cout<<endl;
getch();
return 0;
}
Програма 15.13
Метод insert() в даній версії має 2 параметри: майбутнє розміщення нового елементу в контейнері і значення елемента. Додаємо 2 позиції до результату виконання методу begin(), щоб перейти до елемента №2 (третій елемент в контейнері, рахуючи від 0). Елементи від точки вставки до кінця контейнера зсовуються, щоб було місце для розміщення вставлювання. Розмір контейнера автоматично збільшується на одиницю.
Метод erase() видаляє елемент з вказаної позиції. Решта елементів зсовується, розмір контейнера зменшується на одиницю.
Результат роботи програми:

Списки
Контейнер STL під назвою список являє собою двічі зв’язаний список, в якому кожен елемент містить вказівник на сусіда зліва і справа. Контейнер містить адреси першого і останнього елемента, тому доступ до обох кінців списку здійснюється дуже швидко.