2

std::fill非PODタイプの配列を初期化するために使用することは可能ですか?

ドキュメントには、配置コピーの構築ではなく、配列を初期化するためにstd::fill使用すると記載されています。operator=ただし、代入演算子は、私が見る限り、初期化されていないスペースで呼び出されたときに、現在のメモリを解放する機会が実際にはありません。

例:

struct NonPod
{
    std::string myStr;
};

NonPod arr[10];
NonPod prototype;
NonPod * ptr = &arr[0];
std::fill_n(ptr, 10, prototype);
4

1 に答える 1

5

ヘッダーからではなく、ヘッダーからstd::uninitialized_fill_n探しています。memorystd::fill_nalgorithm

ただし、注意してください!あなたのコードはアラインメントやパディングを考慮していません -std::alignment_ofまたは、利用できないプラットフォームでは適切なブーストの代替品を使用することを検討してください。

于 2011-03-30T18:55:59.770 に答える