使用assign() 是初始化我的C++ 结构向量的好方法吗? [英] Is using assign() a good way to initialise my C++ vector of structs?

查看:41
本文介绍了使用assign() 是初始化我的C++ 结构向量的好方法吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

结构

struct Vanish
{
  int iCount;
  int iRow;
};

我定义了一个 Vanishstd::vector 作为我的类的成员,并希望像这样在构造函数中初始化它:

I defined a std::vector of Vanish as a member of my class, and want to initialise it in the constructor like this:

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

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

有没有更好的方法,或者这被认为可以?

Is there a better way, or is this considered OK?

推荐答案

最好在构造函数的初始化列表中这样做:

It is better to do that in the constructor's initializer list:

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

}

那样,您将避免可能的向量重新分配.请注意,vector 的构造函数将对它的元素进行值初始化.Vanishint 成员的值初始化只是将它们归零.

That way, you'll avoid possible vector reallocations. Note that you vector's constructor will value-initialize its elements. Value-initialization of the int members in Vanish just zeroes them.

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

Note that in C++11, using uniform-initialization you could specify other values easily:

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

}

这篇关于使用assign() 是初始化我的C++ 结构向量的好方法吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆