2015-05-28 3 views
-5

Я изучаю язык C++, и я пытаюсь выяснить, в чем разница между вектором и списком. Я использую инструмент визуальной студии для кодирования. Может кто-нибудь объяснить, в чем разница?Разница между вектором и списком

+0

я думаю, что вы можете найти множество подробных объяснений в гугле –

+0

http://en.cppreference.com/w/cpp/container/vector http://en.cppreference.com/w/cpp/container/ список – shuttle87

ответ

4

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

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

1

Вот некоторые STL контейнеры и то, что они эффективны при:

  • vector: динамический массив - эффективен при случайном доступе, а также добавлять/удалять в конце.
  • list: двухсвязный список - эффективный при переходе вперед/назад и вставка в любом месте.
  • forward_list: индивидуально связанный список - эффективный при прямом обходе и вставке в любом месте.
  • deque: удвоилась закончилась очередь - динамический массив, который также позволяет эффективно добавлять/удалять в начале
  • array: статический массив - фиксированный размер во время компиляции.
Смежные вопросы