固定サイズの循環バッファー (配列として実装) があります。初期化時に、バッファーは指定された最大数の要素で満たされ、円内の現在の位置を追跡するために単一の位置インデックスを使用できます。
循環バッファ内の要素にアクセスする効率的な方法は何ですか? これが私の現在の解決策です:
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
バッファの最大サイズです。