在c ++中使用带向量的对象有更好或更正确的方法吗?

时间:2016-01-29 07:24:59

标签: c++ class pointers object vector

我有一个这样的课程:

class Foo{
public:
   Foo(); 
   Foo(int, int, int)
  ~Foo();
private:    
   int a;
   int b;
   int c;
}

和int main函数,以及将我的元素(对象)保存在向量中:

int main()
{
   vector <Foo*> foo; // <------this line
   for(int i=0; i<=500; i++){
   foo.push_back(new Foo(i+1,i+2; i+3)); //<------ this line 
}

是否有更好的解决方案来替换上面的2行?

tnx all;

1 个答案:

答案 0 :(得分:4)

你需要忘记你所写的Java事物&#34; new&#34;一直只是为了创造一个对象。

int main()
{
   vector<Foo> foo;
   for(int i=0; i<=500; i++)
       foo.push_back(Foo(i+1, i+2, i+3));
}

或者,在C ++ 11中,

int main()
{
   vector<Foo> foo;
   for(int i=0; i<=500; i++)
       foo.emplace_back(i+1, i+2, i+3);
}