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