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