这与我的other post有关。这里的一个建议是使用类Region的类,如下面的代码所示。我还有一些初学者问题 -
a)如何将此向量分配为size = numOfRegions?或者我真的需要为矢量分配大小吗?
b)如何将类Region的对象插入此vector<Region>
?所有这些Region对象都需要由class A
c)我假设我不需要在A类的析构函数中删除此向量..对吗?
struct elemt {
int* vertex;
int foo1;
double foo2;
};
class Region{
public:
std::vector <elemt*> elements;
int info;
}
class A{
public:
std::vector<Region> reg;
const int numOfRegions = 100;
}
A::A(){
// how to create and append Region object to vector std::vector<Region> reg ??
// Do I need to allocate size for this region vector?
}
A::~A(){
//do nothing
// Do I need to delete vector<Region> reg here ??
}
A::doSomething(){
// here I want to append the elements to the vector
// Let i be region 10.
// Let e1 be an element of "struct elemt" that needs to be added
reg[i].elements.push_back(e1);
}
答案 0 :(得分:2)
如果您事先知道矢量的大小,请调用vector.reserve。这不是必需的,因为push_back会在需要时调整向量的大小
vector.push_back(区域());
您不必删除成员向量
答案 1 :(得分:1)
a)向量为您完成所有内存管理,您无需指定大小。但是,如果需要,可以调用vector::reserve
来分配足够的内存(这只是优化问题)
b) reg.push_back(Region());
c)您不必删除堆栈中的向量。但您可能希望删除班级elements
中的向量Region
的内容。