Выделение памяти под элементы связного списка происходит медленнее, чем под вектор? C++

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


Ответы (1 шт):

Автор решения: Harry

В общем случае - да, в конкретных - надо мерять.

Например, сравнить время выполнения

    vector<int> v;
    ...
    vector<int> n {v.begin(),v.end() };

и

    list<int> n {v.begin(),v.end() };

См. https://ideone.com/w68bVP - в общем-то, как вы и предполагаете :)

P.S. Поскольку @avp высказал сомнения в том смысле, что скорость будет выше при выделении памяти вектору сразу - попробуем записывать элементы по одному.

С примерно тем же результатом - https://ideone.com/pihc47

→ Ссылка