On Sat, 29 Mar 2003, Fred Ma wrote: > Hello, > > I'm having the following problem only on cygwin, > not on solaris 8. I have a sanity-check program: > > #include<vector> > #include<iostream> > using namespace std; > int main(void) > { > vector<int> vi(3); > vector<int>::iterator it_vi = vi.begin(); > cout << "Hello world."; > } > > I compile it with gcc 3.2 use > gdb2003-03-03-cvs(cygwin-special) to view > vi.begin() and it_vi. They are different: > > (gdb) p vi.begin() > $1 = {<iterator<std::random_access_iterator_tag,int,int,int*,int&>> = > {<No data fields>}, _M_current = 0xc7e44589} > (gdb) p it_vi > $2 = {<iterator<std::random_access_iterator_tag,int,int,int*,int&>> = > {<No data fields>}, _M_current = 0xa041de0} > > Why are they different? If I actually dereference the iterators, > they contain the same thing. But I want to deal with the iterators > themselves. In particular, I want a conditional breakpoint to trigger > when it_vi==vi.begin()+4. gdb won't let you add 4 to a random > access iterator, so I have to use the _M_current member data. > Since they are not the same above, I can't do that. Thanks for > any light on why they differ. > > Fred
Umm, you do know that calling vi.begin() will create a *new* iterator, right? As for it working on other systems, they may have different implementations of STL iterators. Igor -- http://cs.nyu.edu/~pechtcha/ |\ _,,,---,,_ [EMAIL PROTECTED] ZZZzz /,`.-'`' -. ;-;;,_ [EMAIL PROTECTED] |,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski '---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow! Oh, boy, virtual memory! Now I'm gonna make myself a really *big* RAMdisk! -- /usr/games/fortune -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/