Різниця між 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()
- надає двонаправлені ітератори
- послідовний контейнер, оптимізований таким чином, що головні та кінцеві операції для нього майже також ефективні як для списків, а індексування майже також ефективно, як для векторів; проте, вставка та видалення елемента десь у "середині контейнера" неефективні також, як для векторів
- надає ітератори довільного доступу
- асоціативний контейнер, в якому ключем є саме значення елемента
- всі елементи унікальні за значенням і зберігаються у постійно упорядкованому стані; як критерій порівняння за замовчуванням використовується операція Голосувати