Perhaps this?
boost::circular_buffer<vector<T> > schedule(100);
Then you could use
schedule.rotate(schedule.begin()+1);
to move to the next bucket, which should (in steady-state) avoid
reallocation of the container or the buckets, since you never actually
destruct or copy the vectors.
http://www.boost.org/doc/libs/1_38_0/libs/circular_buffer/doc/circular_buffer.html