LINUX.ORG.RU

dynarray

 ,


0

2

Есть где нибудь хорошая реализация std::dynarray (который должен был войти в C++14, но не вошел из-за проблем с размещением на стеке) хотя бы для кучи?


Есть тролльский QVarLengthArray, но вы таки не сказали что значит для вас слово хороший :)

nikitos ★★★
()
Ответ на: комментарий от nikitos

хороший == такой, как и задумывался, (для stl, чтобы потом только заменить какое нибудь stdext:: на std::) только без стека

Uter
() автор топика

просто массив не подходит?

mashina ★★★★★
()
Ответ на: комментарий от Uter

в vector оверхед по памяти больше (3 указателя против 1 указателя и размера)

Если использовать его как dynarray/VLA, то бишь располагать на стеке, то чёрт его знает, что там компилятор наоптимизирует.

VLA же без STL-style

Ну не всё же сразу, перегрузку begin/end для VLA добавят в C++2x :)

const86 ★★★★★
()
Ответ на: комментарий от const86

На самом деле просто хочется для буферов вместо
auto buff = std::make_unique<uint8_t[]>(nBuffLen);
использовать
std::dynarray<uint8_t> buff(nBuffLen);
и получить все плюшки контейнеров (итераторы, size(), empty())

Uter
() автор топика
Ответ на: комментарий от Uter

Если nBuffLen ограничено сверху, то почему просто не сделать обычный массив размером с верхнюю грань? А если не ограничено, то выделять память на стеке - не лучшая идея, имхо.

Gvidon ★★★★
()

Оно же header-only, можно просто взять из libcxx/include/experimental/dynarray

redbaron ★★
()
Ответ на: комментарий от Uter

в vector оверхед по памяти больше (3 указателя против 1 указателя и размера)

Почему три указателя?

Ну один указатель понятно. Опять же размер, ну и «capacity».

DarkEld3r ★★★★★
()
Ответ на: комментарий от DarkEld3r

Почему три указателя?

Ну вот вы и назвали все три: начало данных вектора, конец данных вектора и конец выделенного куска памяти.

ilammy ★★★
()
Ответ на: комментарий от ilammy

Ну вот вы и назвали все три: начало данных вектора, конец данных вектора и конец выделенного куска памяти.

Меня смутило противопоставления «трёх указателей» и «указателя и размера». Сомневаюсь, что стандарт требует реализовывать эти параметры именно в виде указателю. Практически уверен, что указатель будет один. Впрочем, это не принципиально.

DarkEld3r ★★★★★
()
Ответ на: комментарий от DarkEld3r

Непринципиально, да, но используются указатели так как чаще нужны границы а не длина (заглянул в потроха STL)

Uter
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.