- Rename to circular_buffer.
Agree.
- Add push_front() and pop_front().
Agree.- resize() to behave similarly to vector::resize().
Agree. That means items will be lost from the right end, if necessary. Or, capacity will be increased, if necessary.
- change_capacity() becomes again change_capacity(). I think the name change_capacity best reflects what the method really does. The vector::reserve() can only increase the capacity, never decrease - which may be confusing. And at last the circular_buffer is not vector so it can have different methods from vector.
set_capacity()?
Agree. Make it clear in the documentation about
how change_capacity()/set_capacity() is different to reserve() because of
the possibility of data being removed to fit the specified
capacity. A std::vector::reserve call is a hint, while
a circular_buffer::change_capacity/set_capacity is a hard limit.- insert() will always increase the size and possibly can increase the capacity (if not sufficient).
Agree. We should document that circularity (and related constant-time guarantees) applies to push/pop, but not insert. (or erase?)
This strikes me as a good compromise. For one thing, it leaves the door
open to inserting in a manner that resizes the capacity. (Except for the
problem that if the buffer is full, every insert will require O(n) time)---
The thread in relation to automatic resizing has not yet settled,
but I would suggest going ahead and doing a rev while that one
settles down.---
If you think there is a meaningful way that I can help you out over the
weekend, let me know. (Linux, Cygwin, MSVC 6, 7, Solaris, etc...)Regards,
Nigel Stewart
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
