如何使用boost :: ptr_map有效地使用BOOST_FOREACH(字符数/可读性)?
Kristo在他的回答中证明了可以将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()
}
Run Code Online (Sandbox Code Playgroud)
下面的代码就像我希望的那样.它遵循如何将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;
}
Run Code Online (Sandbox Code Playgroud)