70 / 47 / 5
Регистрация: 10.01.2017
Сообщений: 1,849
|
||||||
1 | ||||||
Разница в скорости resize/puch_back для вектора15.07.2019, 16:11. Показов 1583. Ответов 10
Метки нет (Все метки)
Здравствуйте,
Подскажите пожалуйста, будет ли разница в скорости в применении таким образом resize и push_back для записи в вектор:
0
|
15.07.2019, 16:11 | |
Ответы с готовыми решениями:
10
Resize() для вектора Найти выражение для: вектора скорости; вектора ускорения; модуля радиус-вектора Рассчитать вектор скорости имея направление и модуль вектора скорости Разница между resize и reserve |
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
15.07.2019, 16:21 | 2 |
Будет - push_back резервирует место под новые элементы - size() * 2; когда capacity() == size()
resize не делает этого, поэтому будет работать медленнее
0
|
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
|
|
15.07.2019, 16:35 | 3 |
0
|
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
||||||
15.07.2019, 16:36 | 4 | |||||
А может не будем фантазировать и проведем эксперимент? К примеру, gcc при использовании resize выделяет память степенями двойки. Что и логично - зачем авторам gcc делать два разных алгоритма расширения вектора, если можно сделать один и идти пить пиво?
0
|
Вездепух
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,062
|
|
15.07.2019, 16:38 | 5 |
Никто не знает, будет ли разница. Где-то будет, где-то не будет. Только эксперимент может показать.
0
|
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
|
|
15.07.2019, 16:40 | 6 |
Правда есть исключение, если newsize превышает oldcapacity + oldcapacity/2, то резервируется newsize. К примеру ТС это не относится
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
15.07.2019, 16:43 | 7 | |||||
В 17-й студии вот так
0
|
6107 / 3461 / 1406
Регистрация: 07.02.2019
Сообщений: 8,794
|
|
15.07.2019, 16:47 | 8 |
Да я уже упомянул, но если заменить 6 строку на vec.resize(11) вывод не изменится
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
15.07.2019, 16:52 | 9 |
0
|
322 / 174 / 78
Регистрация: 09.10.2014
Сообщений: 809
|
|
15.07.2019, 17:17 | 10 |
извращуги, обсуждать конкретные реализации...
0
|
Комп_Оратор)
|
|
18.07.2019, 10:26 | 11 |
Я думаю, будет.
В вашем примере resize(i) принуждает вектор изменить размер до i. Vector[i]=i; пишет прямо за последним элементом. Допустимый диапазон индексов в С++ при размере i : 0, i-1. Я понимаю, что ошибка механическая, поэтому уточнение не более чем шутка. Для приведенного примера reserve (1000) до цикла лучше)
0
|
18.07.2019, 10:26 | |
18.07.2019, 10:26 | |
Помогаю со студенческими работами здесь
11
resize вектора векторов Resize вектора вызывает ошибку Разница в скорости выполнения, итераторы Разница в скорости выполнение программы C++ или C# Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |