Boost circular_buffer example
libs/circular_buffer/example/circular_buffer_example.cpp
// Copyright 2003-2008 Jan Gaspar. // Copyright 2013 Paul A. Bristow. Added some Quickbook snippet markers. // Distributed under the Boost Software License, Version 1.0. // (See the accompanying file LICENSE_1_0.txt // or a copy at <http://www.boost.org/LICENSE_1_0.txt>.) //[circular_buffer_example_1 /*`For all examples, we need this include: */ #include <boost/circular_buffer.hpp> //] [/circular_buffer_example_1] int main() { //[circular_buffer_example_2 // 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 //] [/circular_buffer_example_2] return 0; } /* //[circular_buffer_example_output There is no output from this example. //] [/circular_buffer_example_output] */
https://www.boost.org/doc/libs/1_75_0/doc/html/circular_buffer.html
https://www.boost.org/doc/libs/1_75_0/doc/html/circular_buffer/example.html
https://www.boost.org/doc/libs/1_48_0/libs/circular_buffer/doc/circular_buffer.html#boundedbuffer