1

ブーストcircular_bufferの使用を検討していました。ここから:

最大の効率を達成するために、circular_buffer はその要素をメモリの連続した領域に格納します。これにより、以下が可能になります。

固定メモリを使用し、暗黙的または予期しないメモリ割り当てを行わない。

しかし、私は circle_buffer 呼び出しを使用することになっていましたcb.push_back(myObj)。この呼び出しを行うには、このオブジェクトをインスタンス化する必要があります。新しいオブジェクトを呼び出すときにpush_back、circular_buffer の古い古いオブジェクトを置き換えます。

したがって、circular_buffer を使用している間は、すべての新しいオブジェクトをインスタンス化する必要があるため、集中的にメモリを割り当てますpush_back

しかし、私は本当に新しいオブジェクトの設置を避けたいと思っています. 代わりに、からオブジェクトを「再構成」したいと思いますcircular_buffer。もし可能ならば?内部のオブジェクトを再利用できる循環バッファを提案して、高価な実行時メモリ割り当てを回避できますか?

4

2 に答える 2

2

おそらく、循環バッファーではなく循環イテレーターが必要になるでしょう。固定長バッファをデフォルトの構成要素で埋めます。次に、(循環イテレータを介して)要素を埋めるときに、コピーする代わりに構造を変更するだけです。

循環反復子の例については、この質問に対する受け入れられた回答を確認してください。

于 2013-04-23T20:36:09.120 に答える