5

std::vectorであるクラスフィールドがあります。このベクトルに含める要素の数を知っています:N。N個の要素でベクトルを初期化するにはどうすればよいですか?

4

3 に答える 3

7

std::vector次のように宣言されたコンストラクターがあります。

vector(size_type N, const T& x = T());

これを使用して、std::vectorを含むNコピーを作成できますx。のデフォルト値xは初期化された値ですTTデフォルトのコンストラクターを持つクラスタイプの場合、値の初期化はデフォルトの構築です)。

std::vectorこのコンストラクターを使用してデータメンバーを初期化するのは簡単です。

struct S {
    std::vector<int> x;
    S() : x(15) { }
} 
于 2011-03-14T04:12:41.490 に答える
7
class myclass {
   std::vector<whatever> elements;
public:
   myclass() : elements(N) {}
};
于 2011-03-14T04:13:13.637 に答える
1

サイズを指定できるすべてのコンストラクターは、要素のコンストラクターも呼び出します。効率が最優先の場合は、reserve()メンバー関数を使用してサイズを予約できます。これは実際には要素を作成しないため、より効率的です。ただし、ほとんどの場合、ベクトルコンストラクターを介してサイズを指定することは問題ありません。

于 2011-03-14T04:13:29.857 に答える