Вот код шаблона кольцевого буфера. Пользоваться, например, так:
Код
ring_buffer<int, 8> IntBuf8; // буфер на 8 интов
ring_buffer<float, 11> FltBuf11; // буфер на 11 флоатов
struct TStruct {...};
ring_buffer<TStruct, 4> StructBuf4; // буфер на 4 структуры
В последнем случае особенно надо прявлять осторожность - тут легко раздуть код и загасить быстродействие - элементы буфера непосредственным образом копируются. Возможно, в ряде случаев более разумным будет являться использование не самих структур, а указателей на них:
Код
struct TStruct {...};
ring_buffer<TStruct*, 4> pStructBuf4; // буфер на 4 указателя на струтуру типа TStruct
«Отыщи всему начало, и ты многое поймёшь» К. Прутков