Как будет выглядеть наиболее эффективное представление "паскальской строки" в одном байте для размера и максимум 255 символов в C ++:
Структура, содержащая как размер, так и данные:
struct Content { uint8_t size; std::array<uint8_t, 255> data; };
При этом данные будут храниться непосредственно в стеке, что должно быть быстрым, но объекты будут занимать некоторое место в стеке, а операции перемещения стоят дорого
A std::unique_ptr<Content> (То же Content, что и в (1)). Требуется дополнительная разыменование для доступа к размеру и данным, но операции перемещения дешевы.
std::unique_ptr<Content>
Content
Размещение размера в стеке и данных в куче. Это означает, что легко получить доступ к размеру, а операции перемещения все еще дешевы. Однако 7 байтов теряются из-за заполнения перед указателем на данные. Это было бы похоже на std::vector с фиксированной емкостью, поэтому, вероятно, не очень выходной, или?
std::vector
Я считаю вариант (1) наиболее естественным подходом.Это дает пользователю возможность хранить данные в стеке, в то время как (2) форсирует использование динамической памяти.