[解決済み] std::vectorの初期サイズを設定するには?
2022-04-27 02:36:37
質問
私は
vector<CustomClass*>
で、ベクターにたくさんのアイテムを入れ、高速にアクセスする必要があるので、リストは使いません。ベクターの初期サイズ(例えば、新しいものを挿入するときにコピーを避けるために、20 000の場所にする)を設定するにはどうすればよいですか?
解決方法は?
std::vector<CustomClass *> whatever(20000);
または
std::vector<CustomClass *> whatever;
whatever.reserve(20000);
前者は配列の実際のサイズを設定します。つまり、20000個のポインタを持つベクトルになります。後者はベクトルを空にしますが、20000個のポインタのための領域を確保します。したがって、再割り当てすることなく、その数だけ挿入することができます。
少なくとも私の経験では、どちらも性能に大きな差が出ることはかなり珍しいのですが、状況によっては正しさに影響を与えることがあります。特に、再割り当てが行われない限り、ベクターへのイテレータは有効であることが保証されますし、一度サイズと予約領域を設定すれば、それ以上サイズを大きくしない限り、再割り当てが行われないことが保証されます。
関連
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】C++ - ステートメントがオーバーロードされた関数のアドレスを解決できない。
-
[解決済み】ベクトルからサブベクトルを抽出する最適な方法とは?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] std::vector<> からインデックスで要素を消すにはどうしたらいいですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】浮動小数点数の乱数生成