Как я могу эффективно использовать BOOST_FOREACH (число символов/читаемость) с boost:: ptr_map?
Кристо продемонстрировал в своем ответе , что можно использовать BOOST_FOREACH с ptr_map, но на самом деле он не сохраняет меня на машинке (или делает мой код более читаемым), чем итерация по ptr_map с помощью итератора:
typedef boost::ptr_container_detail::ref_pair<int, int* const> IntPair;
BOOST_FOREACH(IntPair p, mymap) {
int i = p.first;
}
// vs.
boost::ptr_map<int, T>::iterator it;
for (it = mymap.begin(); it != mymap.end(); ++it) {
// doSomething()
}
Следующий код находится где-то рядом с тем, что я хочу. Он следует стандартным способам использования BOOST_FOREACH с std:: map. К сожалению, это не скомпилировано:
boost::ptr_map<int, T> mymap;
// insert something into mymap
// ...
typedef pair<int, T> IntTpair;
BOOST_FOREACH (IntTpair &p, mymap) {
int i = p.first;
}