Re: How to gurantee iterator behavior?
On Apr 28, 9:15 pm, desktop <f...@sss.com> wrote:
Gianni Mariani wrote:
desktop wrote:
I have read about input, output forward etc iterators. But if I make
the following:
int myints[] = {1,2,3,4,5,1,2,3,4,5};
std::vector<int> myvector (myints,myints+10);
std::vector<int>::iterator forward_iterator = myvector.end();
I can still type "--forward_iterator" eventhough "--it" is illegal on
forward iterators.
std::vector<T>::iterator does support --.
On this page they pretty much conclude that bidirectional and
random_access iterators are the same thing:
// Random access iterators are bidirectional iterators that
// can access any point in the container.
http://anaturb.net/C/iter_example.htm#random_access_iterator
You're quoting out of context. The very next sentence says that
"In a constant amount of time, one can move to any position in a
containerusing a random access iterator." Which is *not* true
for bidirectional iterators. (The wording in the page you quote
is somewhat loose, perhaps to try and make the text more easily
assimilable. The exact rule is that a random access iterator
meets all the constraints of a bidirectional iterator, and in
addition...)
and that you declare them both with:
vector<int>::iterator pos;
Both what? There is only one type in the declaration above, and
it meets to constraints of a random access iterator (which
includes the constraints of a bidirectional iterator, which
includes the constraints of a forward iterator, which includes
the constraints of an input iterator).
// vector::iterator and deque::iterator
// are random access iterator types
So I don't understand that you write that
"std::vector<T>::iterator does support --."
I don't understand what you don't understand. Random access
iterators must meet all of the constraints of bidirectional
iterators. One of those constraints is support for --.
--
James Kanze (Gabi Software) email: james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34