Sunday, 15 February 2015

c++ - Dereferencing iterator-value type of iterator -



c++ - Dereferencing iterator-value type of iterator -

if want iterate through stl map, use

for (it=my_map.begin();it!=my_map.end();it++) { }

i know if (typeid(map<int,char>::iterator::value_type) == typeid(pair<const int,char>)) true i.e. value type of iterator of std::map(key_type,value_type) std::pair(const key_type,value_type).

but if want do

std::pair<const key_type,value_type> b=it;

compiler give error?

this assignment std::pair<const key_type,value_type> b=*it; works.

my question: type of iterator pointer pair or pair?

iterators iterators. neither pointers, nor pairs. iterators.

"dereferencing"1 iterator std::map<k, v> give std::pair<const k, v>&2, yes, iterator has own type.

1) * , -> operators overloaded perform indirection since, again, iterator not pointer in c++ sense.

2) or const std::pair<const k, v>&, if started off std::map<k, v>::const_iterator.

c++ stl

No comments:

Post a Comment