0

最近、C++ で vecor ライブラリを使用する方法を学びました。ベクトルの既定のコンストラクターとは何か、またはいつ使用する必要があるのか​​ わかりません。

たとえば、構造体があり、n 個の構造体のベクトルを作成したい場合。次のコードは有効ですか:

 struct item
{
    string id;
    string name;
};

    vector <item> vitem;

    vitem.push_back(item()); 

このベクトルの要素は 1 つですか? または要素がまったくありませんか?

4

3 に答える 3

1

はい、これはデフォルトのコンストラクターを呼び出します。デフォルト コンストラクターは、引数を取らないコンストラクターです。のデフォルト コンストラクターはstd::vector、ゼロ要素でベクトルを初期化します。

std::vector<item> items; // implicitly calls default constructor
于 2013-11-03T10:50:34.857 に答える
0

たとえば、構造体があり、n 個の構造体のベクトルを作成したい場合。次のコードは有効ですか:

いいえ、このコードは n 構造体のベクトルを作成しないため無効です。空のベクターを作成します。n 個の構造体のベクトルを作成する場合は、作成する要素の数を明示的に指定する必要があります。例えば

std::vector<item> vitem( n );

または、最初に空のベクターを作成してからサイズを変更することもできます。例えば

srd::vector<item> vitem;
vitem.resize( n );

または、メソッド割り当てを使用できます

std::vector<item> vitem;
vitem.assign( n, item() );
于 2013-11-03T11:05:28.370 に答える
0

あります。vector をポインタではなく var として宣言している場合、ctor はすぐに呼び出されます。

于 2013-11-03T10:50:09.727 に答える