簡體   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