gdb discrepancy in c++ iterators

Igor Pechtchanski pechtcha@cs.nyu.edu
Sat Mar 29 18:08:00 GMT 2003


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/
      |\      _,,,---,,_		pechtcha@cs.nyu.edu
ZZZzz /,`.-'`'    -.  ;-;;,_		igor@watson.ibm.com
     |,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/



More information about the Cygwin mailing list