【问题标题】:Is it possible/advised to store a vector in a struct? C++是否可以/建议将向量存储在结构中? C++
【发布时间】:2012-06-15 21:07:37
【问题描述】:

我一直认为 struct 是一个固定大小的对象,虽然似乎没有任何明显的编译器错误,但我想知道这样做是否通常是一种好的做法。将结构更改为类是否更可取,还是结构也可以这样做?

代码,只是因为人们变得挑剔:

struct Sprite
{
    float x;
    float y;
    std::vector<Sprite> sprite;
}

我所做的本质是让一个类的子类与父类的类型相同。父母死了,孩子也死了。

【问题讨论】:

  • A struct 只是一个默认可见性为public 而不是private 的类。
  • 请注意,将具有构造函数/析构函数的成员添加到结构会使编译器也为该结构发出构造函数/析构函数。暗示 POD 结构的 C 风格技术将不起作用。
  • 在结构中存储一个向量不会改变它的大小。 Vector 的项存储在堆上,因此结构的大小保持不变,无论向量有 0 个元素还是 1000 个元素。

标签: c++ vector struct


【解决方案1】:

std::vector 具有特定的已知大小,并且包含它的任何类或结构都具有特定的已知大小。 std::vector 在堆上分配内存以充当可变大小的数组并存储指向所述内存的指针。结构体和类的唯一区别是结构体默认是公共的,而类默认是私有的。

【讨论】:

  • 谢谢。这绝对是有道理的,向量只会用作指向堆中内存的指针。感谢您的详细回复。
【解决方案2】:

structclass的区别在于成员可见性:最显着的区别是struct的成员默认是public的,而struct的继承默认是public的; class 成员和class 继承默认都是私有的。除此之外,没有区别:您始终可以使用struct 编写代码,生成的代码与使用class 编写的代码等效,反之亦然。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多