C ++中Pascal字符串的数据布局

用户877329

在C ++中,“ pascal字符串”的最有效表示形式在这里是一个字节,最大为255个字符。

  1. 同时包含大小和数据的结构:

    struct Content
        {
        uint8_t size;
        std::array<uint8_t, 255> data;
        }; 
    

    这会将数据直接存储在堆栈上,这应该很快,但是对象将占用一些堆栈空间,并且移动操作非常昂贵

  2. A std::unique_ptr<Content>(与Content(1)中相同)。需要额外的解除引用来访问大小和数据,但是移动操作很便宜。

  3. 将大小放在堆栈上,将数据放在堆上。这意味着很容易访问大小,并且移动操作仍然很便宜。但是,由于在指向数据的指针之前进行了填充,因此浪费了7个字节。这将类似于std::vector具有固定容量的,因此可能不会很退出,或者?

用户877329

我发现选项(1)是最自然的方法。这使用户可以灵活地将数据存储在堆栈上,而(2)强制使用堆存储。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C中的Pascal样式字符串和C样式字符串在一个函数中进行比较

来自分类Dev

C宏将字符串转换为pascal字符串类型

来自分类Dev

将Clob数据(以字符串形式)解密为C#中的实际字符串

来自分类Dev

在Visual C ++中通过TCP发送字符串数据

来自分类Dev

在消息框C#中显示字符串数据

来自分类Dev

从C中的字符串替换字符

来自分类Dev

在 c 中隐藏字符字符串

来自分类Dev

从C中的字符串获取子字符串

来自分类Dev

c 在字符串中搜索目标字符串

来自分类Dev

C#提交给数据库时从字符串中剥离字符

来自分类Dev

创建一种使用指针在C中转换Pascal字符串的方法

来自分类Dev

如何使用struct转换C类型的Pascal样式字符串

来自分类Dev

C / C ++:替换HTTP头中的特定(匹配)字符串(在TCP数据包中)

来自分类Dev

桌面应用程序中本地数据库的C#中的连接字符串

来自分类Dev

如何在C ++中检查字符串中的数据是否为数字?

来自分类Dev

C中的任意长度字符串

来自分类Dev

C ++中的sizeof字符串数组

来自分类Dev

C ++中LPCWSTR的字符串

来自分类常见问题

C#中损坏的字符串

来自分类Dev

C ++中字符串的标记化

来自分类Dev

在Python中打印C字符串

来自分类Dev

C中的只读字符串

来自分类Dev

C扩展中的unicode字符串

来自分类Dev

C中的字符串反向

来自分类Dev

c中的字符串数组声明

来自分类Dev

从C ++字符串中删除注释

来自分类Dev

C ++中的字符串指针

来自分类Dev

C ++中的字符串模板参数

来自分类Dev

C中的污染字符串