Действительно стоит потратить некоторое время на понимание фундаментальных различий между списками и векторами.
Самое существенное различие между ними заключается в том, как они хранят элементы и отслеживают их.
- Списки -
Список содержит элементы, в которых хранится адрес предыдущего и следующего элемента. Это означает, что вы можете ВСТАВИТЬ или УДАЛИТЬ элемент в любом месте списка с постоянной скоростью O (1) независимо от размера списка. Вы также склеиваете (вставляете другой список) в существующий список в любом месте с постоянной скоростью. Причина в том, что список должен изменить только два указателя (предыдущий и следующий) для элемента, который мы вставляем в список.
Списки не годятся, если вам нужен произвольный доступ. Таким образом, если кто-то планирует получить доступ к n-му элементу в списке - нужно пройти список по одному - O (n) speed
- Векторы -
Вектор содержит элементы в последовательности, как массив. Это очень удобно для произвольного доступа. Доступ к «n-му» элементу в векторе является простым вычислением указателя (скорость O (1)). Добавление элементов в вектор, однако, отличается. Если кто-то хочет добавить элемент в середине вектора - все элементы, которые идут после этого элемента, должны быть перераспределены вниз, чтобы освободить место для новой записи. Скорость будет зависеть от размера вектора и от положения нового элемента. Наихудший сценарий - вставка элемента в позицию 2 в векторе, лучший вариант - добавление нового элемента. Поэтому - insert работает со скоростью O (n), где «n» - это количество элементов, которые необходимо переместить, а не обязательно размер вектора.
Существуют и другие различия, связанные с требованиями к памяти и т. Д., Но понимание этих основных принципов работы списков и векторов действительно стоит потратить некоторое время.
Как всегда ... " Преждевременная оптимизация - корень всего зла ", поэтому сначала подумайте, что удобнее, и заставьте вещи работать именно так, как вы хотите, а затем оптимизируйте. Для 10 записей, которые вы упомянули - это действительно не имеет значения, что вы используете - вы никогда не увидите какой-либо разницы в производительности независимо от используемого вами метода.