nes
> std::array не так давно появился, странно что его небыло в первых версиях stl,
> тогда требования к памяти были в разы выше.
В те времена кульные какиры презрительно смотрели на "дельфинов", у которых в дебаге проверялась корректность индекса. Поэтому какирам int[] хватало. Ну иногда 4 месяца баг ловили, зато можно было потом рассказывать кульные какирские истории.
desss
Нет, мне просто нужно в определенный момент нарастить массив, его конец я знаю и так.
desss
>Или, как тарас предожил, размер хранить в куче?
Я это предложил еще в самом начале.
nes
> его конец я знаю и так.
Поздравляю. Такие извращенские пожелания комитет не очень долго рассматривает.
То, что ты хочешь - контейнер из одного указателя, который не знает свой размер, чудовищно опасная и колхозная штука.
Ни проверок, ни безопасности, ни итераторов, ни удобства использования.
В стандарт такое говно не добавляют.
nes
> Я это предложил еще в самом начале.
Увидел, т.е. размер все-таки есть? Это добавляют всегда проверку на nullptr и индирекцию при обращении.
Очень плохо соответствует концепции - мы ничего не платим.
Обращения к элементу вектора не стоят ничего сверх того, что минимально возможно.
nes
> его конец я знаю и так.
Откуда?
desss
То, что я хочу вот:
nes
> Если буфер не пуст, данные его в памяти буду иметь такую структуру:
А емкость для реаллокации откуда он знает? Или он всегда заполнен до конца?
Если пустой буфер всегда имеет что-то в куче, зачем поле размера в кучу отправлять? Из одного места, в намного худшее переложил.
По факту что-то в духе:
Не понял, а какая разница, теперь пустой буфер ещё больше жрёт.
nes
Понятно. Неплохо проверку на nullptr выкинул. Зачем 4 ноля в emptyData? Для мнимой безопасности?
Ну в общем еще немного, и ты себе его допишешь.
Ну нет этого в stl. Что дальше? Как и много чего другого.
И у многих других языков в стандартной либе такого контейнера нет.
1 frag / 2 deaths
> теперь пустой буфер ещё больше жрёт.
Все пустые буферы ссылаются на один участок памяти.
Он кстати с stl плохо дружит.
std::vector нормально работает с типами у которых нет конструктора по-умолчанию.
А твой буфер при ресайзе имеет с ними проблемы.
desss
>Зачем 4 ноля в emptyData? Для мнимой безопасности?
Безопаснее 8 байт в данные запилить, под размер указателя на x64 наверное.
Тема в архиве.