1

構造体

struct Vanish
{
  int iCount;
  int iRow;
};

std::vectorクラスのメンバーとしてofを定義し、次のVanishようにコンストラクターで初期化したいと考えています。

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

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

より良い方法はありますか、それともこれで問題ありませんか?

4

2 に答える 2

4

コンストラクターの初期化子リストでそれを行うことをお勧めします。

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

}

そうすれば、ベクトルの再割り当ての可能性を回避できます。ベクターのコンストラクターは、その要素の値を初期化することに注意してください。intメンバーの値の初期化は、Vanishそれらをゼロにするだけです。

C++11 では、uniform-initialization を使用して他の値を簡単に指定できることに注意してください。

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

}
于 2013-06-08T19:44:13.353 に答える
4

より良い方法はありますか?

はい、もちろん、

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

MAX_VANISHこれにより、値が初期化されVanishた要素を持つベクトルが得られます。

于 2013-06-08T19:39:55.490 に答える