|
Boost Users : |
Subject: Re: [Boost-users] circular_buffer iterators
From: Jan Gaspar (jano_gaspar_at_[hidden])
Date: 2010-09-21 17:46:55
Hi Bosko,
there is no way of checking if the iterator is still valid (except in debug
mode). I recommend you either to rely on operator[] or to get a new interator
from the buffer every time consumer accesses it.
Regards,
Jan
________________________________
From: Bosko Markovic <boskoma_at_[hidden]>
To: boost-users_at_[hidden]
Sent: Mon, 20 September, 2010 23:17:55
Subject: [Boost-users] circular_buffer iterators
I have a simple use case for circular_buffer but I need a few advices.
There is one producer and one consumer which only inspects elements
and circular buffer will only be keeping history of last CB_SIZE
elements.
As far as I have understood there are two ways to access buffer
elements, using indexes and operator[] or using iterators.
I have chosen iterators.
Since adding elements to buffer can invalidate iterators what is the
proper way to check if they are still valid?
Is it comparing it to .end() and .begin()?
typedef boost::circular_buffer<data_type> CircularBuffer;
CircularBuffer cb(CB_SIZE);
CircularBuffer::iterator it = cb.begin();
...
if( it >= cb.begin() && it < cb.end() ){
cout << *it;
}
Regards,
BoskoM.
_______________________________________________
Boost-users mailing list
Boost-users_at_[hidden]
http://lists.boost.org/mailman/listinfo.cgi/boost-users
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