どのような目的で使用する必要がありますstd::get_temporary_buffer
か? 標準は次のように述べています。
最大 n 個の隣接する T オブジェクトを格納するのに十分なストレージへのポインターを取得します。
バッファはスタックに割り当てられると思っていましたが、そうではありません。C++ 標準によると、このバッファは実際には一時的ではありません。::operator new
オブジェクトを構築しないグローバル関数よりも、この関数にはどのような利点がありますか。次のステートメントは同等であるというのは正しいですか?
int* x;
x = std::get_temporary_buffer<int>( 10 ).first;
x = static_cast<int*>( ::operator new( 10*sizeof(int) ) );
この関数は構文シュガーに対してのみ存在しますか? なぜtemporary
その名前にあるのですか?
1996 年 7 月 1 日の Dr. Dobb's Journal で、アルゴリズムを実装するための1 つのユース ケースが提案されました。
バッファーを割り当てられない場合、または要求されたサイズよりも小さい場合でも、アルゴリズムは正しく機能しますが、速度が低下するだけです。