это существенный удар по памяти? Или по возможности стоит делать reserve ?
Стратегия работы с памятью у них может меняться в зависимости от аллокатора, который можно написать самостоятельно. Честно говоря, в практике не встречал ситуации, когда бы по-настоящему помогал reserve, как правило, это преждевременная оптимизация не несущая особой пользы, но, да, в некоторых случаях это может ускорить работу приложения/сэкономить память
Сильное заявление
Поправь, не обижусь
Нет, не выделяют. И это несущественно.
Потом, говорить сразу о всех контейнерах — идиотизм, они все разные.
При чём тут аллокаторы, у них и так в башке полная каша, а ты туда ещё аллокаторы запихнул! Не нужны аллокаторы никому и почти никогда, а уж начинающим — 100% не нужны.
Ну, перед заполнением вектора из какого-то источника с известным размером очень хорошо делать .reserve()
Так если в векторе 10 елементов он же выделит память +- на 15
Кто тебе это сказал?
Если очень надо есть shrink_to_fit
если ты знаешь сколько у тебя будет элементов то сразу зарезервируй
Ну 10 нет, ну если больше. #include <iostream> #include <vector> int main() { std::vector<int>Vec; for(int i = 0; i < 100; i++){ Vec.push_back(i); } std::cout << Vec.capacity(); // 128 }
msvc при расширении увеличивает вектор вроде как в 1.5 раз, а в gcc размер вектора увеличивается в два раза.
Тоисть это от компилятора зависит? Мне говорили что если мы будем добавлять елементы что бы было зарезирвированое место, и мы не влезли не в свою память
Вроде грибы в огороде
вы это про что именно?
пару месяцев назад замерял, было не в два раза. надо перепроверить, мало ли что 😅
Обсуждают сегодня