Re[3]: Шаблон мультиварианта.
От: _NN_  
Дата: 25.02.19 08:37
Оценка:
Здравствуйте, Went, Вы писали:

W>Здравствуйте, _NN_, Вы писали:

_NN>>Экономить на int и так не получится без ущерба производительности, обычно размер int равен или меньше размера указателя.
W>Ну, про int я писал как пример, а в реале — это небольшие структуры: пары векторов, контейнеры, но иногда неожиданно большие вещи.
_NN>>Чем собственно не подходит вариант unique_ptr<string> ?
W>Потому что уник на каждую структуру потребует по указателю на каждый член варианта и будет выделять в лоб место в куче под каждую мелочь. Мой же умозрительный мультивариант обойдется (в простейшем случае) всего лишь одной битовой маской присутствия членов (да, ограничение на 32 или 64 члена) + указатель на начало буфера. И добавление новых членов в этот мультивариант будет иметь нулевые издержки по памяти, но, очевидно, линейно нарастающую сложность для доступа к члену (каждый следующий член будет требовать на 1 сложение больше).

Вам нужен постоянный размер или динамический ? О каком добавлении идёт речь ?
Боюсь, придётся писать такую структуру данных самому.
Чтобы не выделять место под элементы есть optional но у него занимает место индикатор живучести объекта.
Как вариант можно сделать компактный optional где индникатор не будет в самом объекте типа:

Пример: https://github.com/akrzemi1/markable/blob/master/test_markable.cpp#L88
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.