Выделение памяти под элементы связного списка происходит медленнее, чем под вектор? C++
Прочитал, что обращение к системе через new для выделения памяти - медленная операция. В связных списках память выделяется отдельно под каждый элемент. В векторе же память выделяется под внутренний массив, где элементы в памяти расположены последовательно, а выделение происходит только один раз (не берем в расчет возможное изменение вектора и списка). А зачит, что инициализация списка должно происходить медленнее, чем инициализация вектора. Верно ли это?
Ответы (1 шт):
В общем случае - да, в конкретных - надо мерять.
Например, сравнить время выполнения
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