boost 循环缓冲区





  1. #include <boost/circular_buffer.hpp>  
  2.   
  3. int _tmain(int argc, _TCHAR* argv[])  
  4. {  
  5.   
  6.     boost::circular_buffer<int> cb(3);  
  7.   
  8.     // Insert some elements into the buffer.  
  9.     cb.push_back(1);  
  10.     cb.push_back(2);  
  11.     cb.push_back(3);  
  12.   
  13.     int a = cb[0];  // a == 1  
  14.     int b = cb[1];  // b == 2  
  15.     int c = cb[2];  // c == 3  
  16.   
  17.     // The buffer is full now, pushing subsequent  
  18.     // elements will overwrite the front-most elements.  
  19.   
  20.     cb.push_back(4);  // Overwrite 1 with 4.  
  21.     cb.push_back(5);  // Overwrite 2 with 5.  
  22.   
  23.     // The buffer now contains 3, 4 and 5.  
  24.   
  25.     a = cb[0];  // a == 3  
  26.     b = cb[1];  // b == 4  
  27.     c = cb[2];  // c == 5  
  28.   
  29.     // Elements can be popped from either the front or the back.  
  30.   
  31.     cb.pop_back();  // 5 is removed.  
  32.     cb.pop_front(); // 3 is removed.  
  33.   
  34.     int d = cb[0];  // d == 4  
  35.   
  36.     return 0;  
  37. }