循環バッファーの縮小操作を実装しようとしています。バッファーには開始ポインター ( m_start ) があり、要素の数 ( m_numelements) が格納されます。バッファーがいっぱいになると、古い値を削除するだけです。
サイズ 16 の配列があるとします。 m_start = 9 m_numelements = 11.
この配列をサイズ 8 の配列に縮小したい (要素を破棄できます)。
ここでの制約は、古い配列の m_start( 9 ) が、新しい配列の m_start % 新しい容量 ( 9 % 8 = 1 ) にマップされる必要があることです。
コードを書いてみましたが、多くの if-else はしごになってしまいました。これのための効率的な実装はありますか?