std::vectorの初期サイズを設定するにはどうすればいいですか? 質問する

std::vectorの初期サイズを設定するにはどうすればいいですか? 質問する

がありvector<CustomClass*>、ベクターに多くの項目を入れており、高速アクセスが必要なので、リストは使用しません。ベクターの初期サイズを設定するにはどうすればよいでしょうか (たとえば、新しいものを挿入するときにコピーされないように 20,000 桁にするなど)?

ベストアンサー1

std::vector<CustomClass *> whatever(20000);

または:

std::vector<CustomClass *> whatever;
whatever.reserve(20000);

前者は配列の実際のサイズを設定します。つまり、20000 個のポインタのベクトルにします。後者はベクトルを空のままにしますが、20000 個のポインタ用のスペースを予約するため、再割り当てせずにその数まで (最大) 挿入できます。

少なくとも私の経験では、これらのいずれかがパフォーマンスに大きな違いをもたらすことはかなりまれですが、状況によってはどちらも正確性に影響を与える可能性があります。特に、再割り当てが行われない限り、ベクターへの反復子は有効なままであることが保証され、サイズ/予約領域を設定したら、サイズをそれ以上増やさない限り、再割り当てが行われないことが保証されます。

おすすめ記事