固定サイズの循環バッファー(配列として実装されています):初期化時に、バッファーには指定された最大数の要素が入れられます。円内の現在の位置を追跡するために単一の位置インデックスを使用します。固定サイズの循環バッファーのインデックスを効率的にラップする方法
循環バッファ内の要素に効率的にアクセスするにはどうすればよいですか?ここに私の現在のソリューションされています
int GetElement(int index)
{
if (index >= buffer_size || index < 0)
{
// some code to handle the case
}
else
{
// wrap the index
index = end_index + index >= buffer_size ? (index + end_index) - buffer_size : end_index + index;
}
return buffer[index];
}
いくつかの定義:
end_index
はすぐにサークル内の最後の要素の後の要素のインデックス(それも中START_INDEXと同じと考えられる、またはの最初の要素でありますサークル)。
buffer_size
は、バッファの最大サイズです。
(あなたが負の数で作業する必要があると仮定)? –
@Fred、循環バッファに要素を追加すると、buffer_sizeを通過するたびにインデックスがラップされます。 – Kiril
@リリック:私は何かが欠けているはずです。 –