thanks for pointing me in correct direction

googling for iterator invalidate got me into this.
it says in maps(fortunately for my case) doesn't invalidate iterators
upon erase/insert.

http://www.sgi.com/tech/stl/Map.html

--- In [email protected], Knowledge Seeker
<[EMAIL PROTECTED]> wrote:
>
> Hi !
> 
> And oh I forgot in the last mail.
> The iterator is 'valid' if the contents of the container doesn't
change, 
> means there is no deletion, or addition in the container.
> 
> If there is addition / deletion the iterator gets invalidated.
> 
> 
> 
> Indika Bandara Udagedara wrote:
> >
> > Hi,
> > can you explain the life cycle of an iterator ?
> >
> > pls consider following example.
> >
> > typedef map<int, int> mapii;
> > typedef map<int, int>::iterator itii;
> >
> > mapii m;
> > pair<itii, bool> p = m.insert(make_pair(1, 2));
> > itii it = p.first;
> >
> > // do all sorts of insert/erase to map
> > // but dont remove pair(1,2)
> > m.insert(0, 1);
> > m.insert(2, 3);
> > m.insert(3, 4);
> > // so the map would be
> > // 0,1
> > // 1,2 <-- we are looking at here
> > // 2,3
> > // 3,4
> >
> > // do some erases
> > m.erase(2);
> > m.erase(0);
> > // so the map would be
> > // 1,2 <-- we are looking at here
> > // 3,4
> >
> > // do some inserts
> > m.insert(-1, 0);
> > m.insert(0, 1);
> > m.insert(5, 6);
> > // so the map would be
> > // -1,0
> > // 0,1
> > // 1,2 <-- we are looking at here
> > // 3,4
> > // 5,6
> >
> > // now we are going to remove 'it' which we kept safely
> > m.erase(it);
> > // so the map would be
> > // -1,0
> > // 0,1
> > // 3,4
> > // 5,6
> >
> > this works as expected. but can this be guarenteed.
> > eg. if i do all sorts of manipulations for the map without touching
> > the iterator would it last ?
> >
> > one more thing. the iterator is a local variable. map returns an
> > iterator on insert (not a reference to an iterator). so is what i'm
> > doing correct? can the iterator be treated like a pointer. i tried
> > with moving the local iterator around functions eg. returning
> > iterator. it works like a pointer as i understood.
> >
> > thanks.
> >
> >
>


Reply via email to