在C ++中,“ pascal字符串”的最有效表示形式在这里是一个字节,最大为255个字符。
同时包含大小和数据的结构:
struct Content
{
uint8_t size;
std::array<uint8_t, 255> data;
};
这会将数据直接存储在堆栈上,这应该很快,但是对象将占用一些堆栈空间,并且移动操作非常昂贵
A std::unique_ptr<Content>
(与Content
(1)中相同)。需要额外的解除引用来访问大小和数据,但是移动操作很便宜。
将大小放在堆栈上,将数据放在堆上。这意味着很容易访问大小,并且移动操作仍然很便宜。但是,由于在指向数据的指针之前进行了填充,因此浪费了7个字节。这将类似于std::vector
具有固定容量的,因此可能不会很退出,或者?
我发现选项(1)是最自然的方法。这使用户可以灵活地将数据存储在堆栈上,而(2)强制使用堆存储。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句