如何避免在C ++对象中填充?

分形

我有一堂课,我想对它进行重组以避免padding我该怎么做?我应该担心功能顺序吗?

该类是:

class MyClass
{
    private:
    std::vector<std::pair<char,MyClass>> fils;
    std::string etiquette = "";
    unsigned int frequence = 0;

    void privateFunction1();
    void privateFunction2();
    void privateFunction3();

    public:
    MyClass();

    void publicFunction1();
    void publicFunction2();
    void publicFunction3();
};
索伦

如评论中已经提到的,功能和功能顺序对于大小并不重要。

MyClass结构本身(或至少在32位系统上至少没有,但是您没有提及cpu体系结构)中实际上应该没有任何填充,但是std :: vector和std :: string的内容分配在类的实际结构。

如您在此答案中所见,向量的内容是在向向量中添加数据时分配的连续内存中,除非您设置容量,否则可能会产生很多开销-因此capacity()std :: vector的MyClass中的数据可能会增加额外的开销。

消除填充可以为您节省任何内容的唯一结构是std::pair<char, MyClass>..您没有说出std :: vector中有多少个元素,但是如果每个可能的char几乎有一个(即256个),并且由于您担心总的内存消耗,因此最好使用

 MyClass *fils[256];

代替

 std:vector< std:pair<char, MyClass> > fils

因为您不再需要管理向量的容量来获取确切的空间,并且填充时与std :: pair的开销几乎相同。

另外,我的系统上空的std :: string的开销为32个字节,因此,根据所保存的内容,etiquette您可能还需要重新考虑-例如,如果etiquette在MyClass的不同实例中重复了,则可能想要找到一种方法来保留一组唯一的值,而只是一个从MyClass指向唯一值的指针etiquette

YMMV。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何避免C ++中的算术溢出?

来自分类Dev

如何用数据表中的关系填充对象?

来自分类Java

如何使用自定义对象在JavaFX中填充ListView?

来自分类Dev

如何避免在C ++中重复删除变量?

来自分类Dev

如何避免C ++中的这种for循环混乱?

来自分类Dev

如何用不同类的对象填充类中的向量

来自分类Dev

如何在C ++中避免NaN

来自分类Dev

如何用Java中的对象属性填充JTable?

来自分类Dev

如何循环js对象并填充表中的值?

来自分类Dev

如何遍历对象数组并在mouseover函数中填充对象?

来自分类Dev

如何在self.Self对象中填充addressInfos对象

来自分类Dev

如何从“ this”对象中填充参考文档?

来自分类Dev

如何在数组中的对象内部填充对象?

来自分类Dev

如何避免在C中嵌套ifs?

来自分类Dev

如何避免在Tensorflow中填充求和

来自分类Dev

从C#中返回的数据集中填充对象

来自分类Dev

如何在jsp中填充Java对象值

来自分类Dev

如何在猫鼬中的虚拟对象中填充对象

来自分类Dev

如何舒适地用Groovy中的新对象填充列表?

来自分类Dev

如何用JS对象中的OPTIONS填充SELECT?

来自分类Dev

如何使用LINQ查询中的singe对象填充GridView?

来自分类Dev

如何用javascript中的数组中的数据填充和对象

来自分类Dev

如何在多个输入字段中填充以下对象?

来自分类Dev

如何在java中自动填充对象?

来自分类Dev

如何填充嵌套在 Mongoose 对象数组中的文档?

来自分类Dev

如何使用javascript在对象数组中填充缺失的日期?

来自分类Dev

如何制作需要填充的对象中的所有字段或根本不填充对象中的任何字段?

来自分类Dev

如何使用对象列表中的字符串填充 ComboBox?

来自分类Dev

如何填充猫鼬中的嵌套对象?

Related 相关文章

  1. 1

    如何避免C ++中的算术溢出?

  2. 2

    如何用数据表中的关系填充对象?

  3. 3

    如何使用自定义对象在JavaFX中填充ListView?

  4. 4

    如何避免在C ++中重复删除变量?

  5. 5

    如何避免C ++中的这种for循环混乱?

  6. 6

    如何用不同类的对象填充类中的向量

  7. 7

    如何在C ++中避免NaN

  8. 8

    如何用Java中的对象属性填充JTable?

  9. 9

    如何循环js对象并填充表中的值?

  10. 10

    如何遍历对象数组并在mouseover函数中填充对象?

  11. 11

    如何在self.Self对象中填充addressInfos对象

  12. 12

    如何从“ this”对象中填充参考文档?

  13. 13

    如何在数组中的对象内部填充对象?

  14. 14

    如何避免在C中嵌套ifs?

  15. 15

    如何避免在Tensorflow中填充求和

  16. 16

    从C#中返回的数据集中填充对象

  17. 17

    如何在jsp中填充Java对象值

  18. 18

    如何在猫鼬中的虚拟对象中填充对象

  19. 19

    如何舒适地用Groovy中的新对象填充列表?

  20. 20

    如何用JS对象中的OPTIONS填充SELECT?

  21. 21

    如何使用LINQ查询中的singe对象填充GridView?

  22. 22

    如何用javascript中的数组中的数据填充和对象

  23. 23

    如何在多个输入字段中填充以下对象?

  24. 24

    如何在java中自动填充对象?

  25. 25

    如何填充嵌套在 Mongoose 对象数组中的文档?

  26. 26

    如何使用javascript在对象数组中填充缺失的日期?

  27. 27

    如何制作需要填充的对象中的所有字段或根本不填充对象中的任何字段?

  28. 28

    如何使用对象列表中的字符串填充 ComboBox?

  29. 29

    如何填充猫鼬中的嵌套对象?

热门标签

归档