レコードを構築するためのクラスを開発しています (固定数のフィールドを使用)。私の公開メソッドにより、ユーザーはインデックスによって個々の値を挿入できます。ユーザーがすべてのフィールドに入力する必要はありません。そのため、すべてのフィールドが空の文字列に初期化された状態で、レコードを表すベクトルを正確なサイズに事前に割り当てたいと思います。
プッシュバック ループよりも簡単にこれを行う方法はありますか?
レコードを構築するためのクラスを開発しています (固定数のフィールドを使用)。私の公開メソッドにより、ユーザーはインデックスによって個々の値を挿入できます。ユーザーがすべてのフィールドに入力する必要はありません。そのため、すべてのフィールドが空の文字列に初期化された状態で、レコードを表すベクトルを正確なサイズに事前に割り当てたいと思います。
プッシュバック ループよりも簡単にこれを行う方法はありますか?
このようなもの:
std::vector<std::string> v(N);
はN
文字列の数です。N
これにより、空の文字列を持つベクトルが作成されます。
ベクトルクラスの標準コンストラクターの 1 つを選択するだけで済みます。これは、入力で要素数を受け取るものです (デフォルトのコンストラクターで生成され、の場合は空の文字列になりますstd::string
)。始まり。
int N = 10;
std::vector<std::string> myStrings(N);
すべての文字列を空の文字列とは異なる値に初期化することもできます。次に例を示します。
int N = 10;
std::vector<std::string> myStrings(N,std::string("UNINITIALIZED") );
ドキュメント: http://www.cplusplus.com/reference/vector/vector/vector/
こちらもお読みください: Initializing an object to all zeroes
std::vector<std::string> v(N);
ことをします。