繁体   English   中英

使用assign()是初始化我的C ++结构向量的好方法吗?

[英]Is using assign() a good way to initialise my C++ vector of structs?

结构

struct Vanish
{
  int iCount;
  int iRow;
};

我将Vanishstd::vector定义为我的类的成员,并希望像这样在构造函数中对其进行初始化:

class BigClass
{
  public:
    BigClass();
  private:
    std::vector<Vanish> tovanish;
};

void BigClass::BigClass()
{
  Vanish empty = {0,0};
  tovanish.assign(MAX_VANISH, empty);
}

有没有更好的方法,还是可以吗?

有没有更好的办法?

是的当然

BigClass::BigClass() : tovanish(MAX_VANISH) {}

这为您提供了一个具有MAX_VANISH值初始化的Vanish元素的向量。

最好在构造函数的初始化程序列表中执行此操作:

BigClass::BigClass()
: tovanish(MAX_VANISH)
{

}

这样,您将避免可能的向量重新分配。 请注意,vector的构造函数将对其元素进行值初始化。 Vanish int成员的值初始化只是将它们Vanish

请注意,在C ++ 11中,使用统一初始化可以轻松指定其他值:

BigClass::BigClass()
: tovanish(MAX_VANISH, {42, 24})
{

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM