Boost logo

Boost Users :

Subject: Re: [Boost-users] circular_buffer: How to make push_back() increase capacity?
From: Cory Nelson (phrosty_at_[hidden])
Date: 2009-08-30 04:49:27


On Fri, Aug 28, 2009 at 3:17 PM, Robert Dailey<rcdailey_at_[hidden]> wrote:
> Hello,
> I have a list of colors that I need to be able to cycle through, either by
> rotating the container or by using an iterator that will rotate (i.e. return
> to the beginning when I increment at the end, and vice-versa). The goal is
> to be able to iterate through the container in a circular way and process
> all of the colors repeatedly.
> I chose a boost::circular_buffer for this job, I assumed it was the perfect
> tool for the job. It works great, except I would like to be able to call
> push_back() to add all of my colors to the buffer without having to call
> set_capacity() on it first. It's a minor thing, but omitting the call to
> set_capacity() would make it slightly more scalable/manageable since I won't
> have to keep incrementing the size of the capacity each time I want to add
> colors to the buffer.
> How can I achieve this?

I'm not familiar with circular_buffer, but something quick n' dirty:

std::vector<color> colors;

colors.push_back(color());
...

for(std::vector<color>::size_type i = 0; i < colors.size(); i = (i +
1) % colors.size())
{
  color &c = colors[i];
}

-- 
Cory Nelson
http://int64.org

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net