| View previous topic :: View next topic |
| Author |
Message |
puzzlecracker Guest
|
Posted: Wed Sep 28, 2005 9:27 pm Post subject: pssible confusion about iterators |
|
|
let's say I have
class A{};
vector<A*>::iterator ii;
is it fair to assume that ii has a type of A* (given that ii is not
invalidated)?
and use it as
A* a= *ii;
what are other mean to extract tbe pointer from vector?
thanks
|
|
| Back to top |
|
 |
puzzlecracker Guest
|
Posted: Wed Sep 28, 2005 9:32 pm Post subject: Re: pssible confusion about iterators |
|
|
puzzlecracker wrote:
| Quote: | let's say I have
class A{};
vector<A*>::iterator ii;
is it fair to assume that ii has a type of A* (given that ii is not
invalidated)?
and use it as
A* a= *ii;
what are other mean to extract tbe pointer from vector?
thanks
|
Any ideas why my google interface multi-posts..
anyway that is NOT what I mean...
something even more intersting.
class A{};
vector<A>::iterator ii=vec.begin();
....
A* a =&(*ii);
is it allowed...
|
|
| Back to top |
|
 |
Victor Bazarov Guest
|
Posted: Wed Sep 28, 2005 9:38 pm Post subject: Re: pssible confusion about iterators |
|
|
puzzlecracker wrote:
| Quote: | class A{};
vector<A>::iterator ii=vec.begin();
...
A* a =&(*ii);
is it allowed...
|
It's not only allowed (for a valid 'ii'), it's the only way. An iterator
is NOT a pointer, and usually there is no conversion between them.
V
|
|
| Back to top |
|
 |
puzzlecracker Guest
|
Posted: Thu Sep 29, 2005 12:31 am Post subject: Re: pssible confusion about iterators |
|
|
Victor Bazarov wrote:
| Quote: | puzzlecracker wrote:
class A{};
vector<A>::iterator ii=vec.begin();
...
A* a =&(*ii);
is it allowed...
It's not only allowed (for a valid 'ii'), it's the only way. An iterator
is NOT a pointer, and usually there is no conversion between them.
V
|
I always suspicious about iterators and about their return values ,
having a believe that they actually return proxies instead of object :(
|
|
| Back to top |
|
 |
Clark S. Cox III Guest
|
Posted: Thu Sep 29, 2005 1:01 pm Post subject: Re: pssible confusion about iterators |
|
|
On 2005-09-28 20:31:09 -0400, "puzzlecracker" <ironsel2000 (AT) gmail (DOT) com> said:
| Quote: |
Victor Bazarov wrote:
puzzlecracker wrote:
class A{};
vector<A>::iterator ii=vec.begin();
...
A* a =&(*ii);
is it allowed...
It's not only allowed (for a valid 'ii'), it's the only way. An iterator
is NOT a pointer, and usually there is no conversion between them.
V
I always suspicious about iterators and about their return values ,
having a believe that they actually return proxies instead of object
|
Some iterators do return proxies. However, vector's iterators are not
among them. Given your definition of 'ii' above:
(*ii) will always return a reference to an object of type A (assuming
that vec is not empty), and &*ii will be a pointer to that referenced
object.
--
Clark S. Cox, III
[email]clarkcox3 (AT) gmail (DOT) com[/email]
|
|
| Back to top |
|
 |
red floyd Guest
|
Posted: Thu Sep 29, 2005 5:57 pm Post subject: Re: pssible confusion about iterators |
|
|
Clark S. Cox III wrote:
| Quote: | Some iterators do return proxies. However, vector's iterators are not
among them.
|
What about std::vector<bool>?
|
|
| Back to top |
|
 |
|