C 03 では、std::vector
C 11 と同様の 3 つの Resize() オーバーロードをサポートする Boost.Container の Vector
ただし、C 11 モードでは、std::vector と Boost.Container のベクトルは両方とも初期化されたままです。値の初期化を目的としたオーバーロードを使用する場合、ゼロを含む新しい要素。これにより、次のような疑問が生じます:
C 11 std::vector::resize() インターフェイスの変更は実際に効果的ですか?
結果は、インターフェイスの変更が意図した効果をもたらしていないことを示唆しています。新しい要素は両方でまだ初期化中です
補遺
既存のアロケーターの制限に対処するために、代わりのアロケーター アダプターが提案されています。これは、値の初期化を実現するためのより安全で信頼性の高い方法を提供します。すべてのタイプの要素の初期化:
template <typename T, typename A=std::allocator<T>> class default_init_allocator : public A { // ... implementation };
このアダプターは、construct() 呼び出しに割り込みます。 value-initialization を実行し、それらをデフォルト初期化呼び出しに変換します。また、デフォルトの初期化も正しく処理されます。
以上がC 11 の `std::vector::resize()` インターフェイスは、新しい要素を効果的に値初期化するように変更されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。