Mail Archives: cygwin/2003/03/29/11:18:16
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 AT cs DOT nyu DOT edu
ZZZzz /,`.-'`' -. ;-;;,_ igor AT watson DOT ibm DOT 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/
- Raw text -