boost 라이브러리의 링버퍼(circular buffer) 사용방법

Software/C++ Builder|2023. 2. 6. 16:04
반응형

boost 라이브러리에 있는 링버퍼(circular buffer)의 사용방법입니다.

이 부스트 라이브러리의 링버퍼는 큐(Queue) 를 사용하고 있는 듯 합니다. 버퍼가 가득찬 상태에서 추가로 데이타가 들어오면 가장먼저 들어온 데이타 순서로 제거 되면서 버퍼를 Shift 시키면서 데이타를 저장하는 방식입니다. 

#include <boost/circular_buffer.hpp>


// Create a circular buffer with a capacity for 3 integers.
boost::circular_buffer<int> cb(3);

// Insert three elements into the buffer.
cb.push_back(1);
cb.push_back(2);
cb.push_back(3);

int a = cb[0];  // a == 1
int b = cb[1];  // b == 2
int c = cb[2];  // c == 3

// The buffer is full now, so pushing subsequent
// elements will overwrite the front-most elements.

cb.push_back(4);  // Overwrite 1 with 4.
cb.push_back(5);  // Overwrite 2 with 5.

// The buffer now contains 3, 4 and 5.
a = cb[0];  // a == 3
b = cb[1];  // b == 4
c = cb[2];  // c == 5

// Elements can be popped from either the front or the back.
cb.pop_back();  // 5 is removed.
cb.pop_front(); // 3 is removed.

// Leaving only one element with value = 4.
int d = cb[0];  // d == 4

 

반응형

댓글()