矢量声明和大小分配

时间:2010-02-09 11:03:50

标签: c++

这与我的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);

}

2 个答案:

答案 0 :(得分:2)

  1. 如果您事先知道矢量的大小,请调用vector.reserve。这不是必需的,因为push_back会在需要时调整向量的大小

  2. vector.push_back(区域());

  3. 您不必删除成员向量

答案 1 :(得分:1)

a)向量为您完成所有内存管理,您无需指定大小。但是,如果需要,可以调用vector::reserve来分配足够的内存(这只是优化问题)

b) reg.push_back(Region());

c)您不必删除堆栈中的向量。但您可能希望删除班级elements中的向量Region的内容。