1. How about push_front()? (in std::list style) And pop_front()?
Imagine you have a cyclic buffer which is full. When you add (push_back or insert) a new item into this buffer the first (oldest) item will be removed.
Ahh, I see that your conceptualisation is based on age, or order of insertion. Mine was more circular- list oriented: Adding to the front would overwite the backmost item if the buffer is already full. Being a circle, the buffer slides either left or right, as needed.
In the case that the buffer is full and items are alternatively added to the front and back, nothing much happens. Admittedly, a special case.
Perhaps our concepts are incompatible. Looking at Knuth's coverage of Circular Lists, insertion is allowed at both ends. Knuth also mentions FIFO (first-in first-out) lists as being sometimes called "circular stores". There seems to be no particular implication of circular meaning one way or the other, based on Knuth.
So the issue here seems to be whether a cyclic_buffer should be circular-list-like or FIFO-like. Given that there is already a queue container adapter, perhaps it's worth listing some applications of cyclic_buffer that depend on either circular-list-like or FIFO-like semantics.
Could a queue adaptor using a cyclic_buffer instead of a deque provide the explicitly FIFO-like mode of operation? (While leaving cyclic_buffer to be circular-list-like?)
Semantics of resize should probably follow vector:
1. The capacity is implicitly adjusted to fit the
requested size.
http://www.sgi.com/tech/stl/Vector.html
vector::resize
Inserts or erases elements at the end such that the size becomes n.
(I think a developer may find it surprising for a cyclic_buffer::resize to be clamped to the capacity.)
2. Items are lost from the end if the container is to be shrunk.
Are you sure you want to lost the items at the end ? Not at the beginning (the
In the FIFO-view, the leftmost/oldest should be removed, agreed. In the circular-list view, it is not so obvious - so follow vector and erase the rightmost... :-)
Have a nice weekend, I'm off to the country side...
Nigel
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost