假设我有一个包含一些结构数组的类,以及一个指向该数组的指针。
struct Box {
//stuff
};
class Foo {
private:
Box *boxPtr //pointer to an array of Box structs
int max; //the size of the partially filled array
int boxCounter; //the current number of non-NULL elements in the array
public:
Foo(); //constructor
Foo(const Foo &obj); //copy constructor
~Foo(); //destructor
bool newBoxInsert(Box newBox){
//adds another Box to my array of Box structs
boxCounter++;
}
//etc
};
在我的int main()中,我不得不创建一个Foo类的全新对象。 我将需要部分填充不确定大小的数组,其指针是boxPtr。
我如何初始化该数组?构造函数应该这样做吗?或者我应该让newBoxInsert处理它吗?
在任何一种情况下,我将如何实现这一目标?我猜我必须动态分配数组。如果是这种情况,那么将指针作为类成员是好的......对吗?
例如,在将第一个元素添加到我的数组时,我应该使用
boxCounter = 1;
boxPtr = new Box[boxCounter];
然后继续继续向数组添加元素?
也许用矢量做得更好。在添加元素时,它们更加灵活(?)。向量是否可以包含结构作为元素?
[/的n00b]
答案 0 :(得分:2)
private:
Box *boxPtr
将其替换为:
private:
std::vector<Box> mbox;
它可以节省您所有的手动内存管理。而且你不太可能出错
是的,std::vector
可以包含结构作为元素。实际上它是一个模板类,因此它可以存储您想要的任何数据类型。
在C ++中如果需要动态数组,最简单,最明显的选择是std::vector
。