Re[7]: vector::reserve() and resize()
От: niXman Ниоткуда https://github.com/niXman
Дата: 07.05.20 10:09
Оценка: :)
Здравствуйте, niXman, Вы писали:

X>я не вижу в доках по reserve() никаких слов о том, что он может НЕ аллоцировать память в случае когда ты зовешь reserve() для пустого вектора и аргументом указано значение отличное от нуля.


для CLang это тоже работает:
https://wandbox.org/permlink/mmfEtX831AkUdlJf

да и по логике — оно должно работать везде, иначе получится что reserve() сломан!
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[8]: vector::reserve() and resize()
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 07.05.20 11:36
Оценка: +4
Здравствуйте, niXman, Вы писали:

X>да и по логике — оно должно работать везде, иначе получится что reserve() сломан!


Reserve выделит всё правильно, но для пустого вектора data может вернуть не указатель на выделенную память, а что-то другое. Например, в отладочном режиме я бы так и сделал, чтобы обнаруживать ошибки при обращении.
Re[6]: vector::reserve() and resize()
От: Alexander G Украина  
Дата: 09.05.20 03:37
Оценка: +1
Здравствуйте, _NN_, Вы писали:

_NN>Если нужно просто выделить память и использовать то простейший вариант make_unique<int[]>(10);


Это тоже с инициализацией, тогда уже таки vector<int>(10); , просто без лишних reserve.

Без иницилизации — make_unique_for_overwrite<int[]>(10), unique_ptr<int[]>(new int[10]);
Русский военный корабль идёт ко дну!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.