どのような目的で使用する必要があります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つのユースケースが提案されました。
バッファを割り当てることができない場合、またはバッファが要求よりも小さい場合でも、アルゴリズムは正しく機能します。単に速度が低下するだけです。
std::get_temporary_buffer
に、C ++ 17では非推奨になります。