Різниця між STL контейнерами vector, deque, list, set вC

Автор: alek_yam ← до списку ← →

  • послідовний контейнер, який забезпечує можливість швидкого доступу до довільного елемента за допомогою операцій індексування [] або at()
  • зміна розмірів вектора (в т.ч. неявна при виклику методів push_back(), pop_back(), insert(), erase()) є дорогою операцією
  • надає додаткові засоби для керування резервуванням пам'яті reserve() та capasity()
  • надає ітератори довільного доступу

  • послідовний контейнер, оптимізований під операції вставки та видалення елементів
  • операції індексування [] і at() відсутні через їх низьку ефективність
  • надає додаткові засоби для ефективного маніпулювання зі списками: splice(), sort(), merge(), reverce(), а також операції для видалення елементів зі списку: remove(), remove_if() , unique()
  • надає двонаправлені ітератори

  • послідовний контейнер, оптимізований таким чином, що головні та кінцеві операції для нього майже також ефективні як для списків, а індексування майже також ефективно, як для векторів; проте, вставка та видалення елемента десь у "середині контейнера" ​​неефективні також, як для векторів
  • надає ітератори довільного доступу

  • асоціативний контейнер, в якому ключем є саме значення елемента
  • всі елементи унікальні за значенням і зберігаються у постійно упорядкованому стані; як критерій порівняння за замовчуванням використовується операція Голосувати