std::vector::resize() と std::vector::reserve()
C では、 std:: Vector は、同じ型の要素を格納するためによく使用されるコンテナです。メモリ内で異なる役割を果たす 2 つのメソッド std::vector::reserve() と std::vector::resize() を提供します。 Management.
std::vector::reserve()
std::vector::resize()
提供されたコード内のアプリケーション
指定されたサンプル内コードでは、メンバー ベクトル my_member は、最初に std::vector::reserve() を使用して n_dim 要素にメモリを割り当てられます。ただし、要素は初期化されず、現在の論理サイズ (0) を超える要素にアクセスすると、未定義の動作またはエラーが発生します。
要素をベクターに書き込むには、std::vector::resize() を次のようにする必要があります。使用済み。この場合、ベクトルのサイズを n_dim に変更し、すべての要素をゼロに初期化します。
VS2010 SP1 の動作
提供されたテスト コードは、次の理由により、VS2010 SP1 でのデバッグ ビルドに失敗します。論理サイズが 0 のみのベクトルの要素 5 にアクセスしようとします。これは未定義の動作および結果とみなされます。デバッグ モードでクラッシュします。
結論
提供された情報に基づくと、要素が必要な場合は std::vector::resize() を使用するのが正しいです。ベクトルに書き込まれます。 std::vector::reserve() は、将来の挿入が発生することがわかっていて、それらのために事前にメモリを予約する必要があるが、要素の値を前もって初期化する必要がない場合に使用する必要があります。
以上が`std::vector::reserve()` と `std::vector::resize()`: 効率的なメモリ管理のためにどちらを使用する場合?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。