Разница между вектором и списком

Опубликовано: 19 Июня, 2021

Вектор: вектор - это тип динамического массива, который может автоматически изменять размер после вставки или удаления элементов. Элементы вектора помещаются в непрерывное хранилище, чтобы к ним можно было получить доступ и пройти через итераторы. Элемент вставляется в конец вектора.
Пример:

вектор v;
v.insert (5);
v.delete ();

Список: Список - это последовательность с двойной связью, которая поддерживает как прямой, так и обратный обход. Время, затрачиваемое на вставку и удаление в начале, конце и середине, постоянно. Он имеет несмежную память и предварительно выделенную память нет.
Пример:

список l;
l.insert_begin (5);
l.delete_end ();

Ниже приведена таблица различий между Vector и List:

Вектор Список
У него непрерывная память. Пока у него несмежная память.
Это синхронизировано. Пока не синхронизируется.
Вектор может иметь размер по умолчанию. У списка нет размера по умолчанию.
В векторе каждый элемент требует места только для себя. В списке каждый элемент требует дополнительного места для узла, который содержит элемент, включая указатели на следующий и предыдущий элементы в списке.
Вставка в конце требует постоянного времени, но вставка в другом месте обходится дорого. Вставка стоит дешево, где бы в списке она ни находилась.
Vector является потокобезопасным. Список не является потокобезопасным.
Удаление в конце вектора требует постоянного времени, но для остального - O (n). Удаление обходится дешево, независимо от того, где оно происходит в списке.
Возможен произвольный доступ к элементам. Произвольный доступ к элементам невозможен.
Итераторы становятся недействительными, если элементы добавляются в вектор или удаляются из него. Итераторы действительны, если элементы добавляются в список или удаляются из него.