Разница между вектором и списком
Опубликовано: 19 Июня, 2021
Вектор: вектор - это тип динамического массива, который может автоматически изменять размер после вставки или удаления элементов. Элементы вектора помещаются в непрерывное хранилище, чтобы к ним можно было получить доступ и пройти через итераторы. Элемент вставляется в конец вектора.
Пример:
вектор v; v.insert (5); v.delete ();
Список: Список - это последовательность с двойной связью, которая поддерживает как прямой, так и обратный обход. Время, затрачиваемое на вставку и удаление в начале, конце и середине, постоянно. Он имеет несмежную память и предварительно выделенную память нет.
Пример:
список l; l.insert_begin (5); l.delete_end ();
Ниже приведена таблица различий между Vector и List:
Вектор | Список |
---|---|
У него непрерывная память. | Пока у него несмежная память. |
Это синхронизировано. | Пока не синхронизируется. |
Вектор может иметь размер по умолчанию. | У списка нет размера по умолчанию. |
В векторе каждый элемент требует места только для себя. | В списке каждый элемент требует дополнительного места для узла, который содержит элемент, включая указатели на следующий и предыдущий элементы в списке. |
Вставка в конце требует постоянного времени, но вставка в другом месте обходится дорого. | Вставка стоит дешево, где бы в списке она ни находилась. |
Vector является потокобезопасным. | Список не является потокобезопасным. |
Удаление в конце вектора требует постоянного времени, но для остального - O (n). | Удаление обходится дешево, независимо от того, где оно происходит в списке. |
Возможен произвольный доступ к элементам. | Произвольный доступ к элементам невозможен. |
Итераторы становятся недействительными, если элементы добавляются в вектор или удаляются из него. | Итераторы действительны, если элементы добавляются в список или удаляются из него. |