对于STL的遍历操作,可以使用std:for_each,但是使用std:for_each的话,操作起来不是很灵活。
1 // for_each. Apply a function to every element of a range. 2 template <class _InputIter, class _Function> 3 _Function for_each(_InputIter __first, _InputIter __last, _Function __f) { 4 __STL_REQUIRES(_InputIter, _InputIterator); 5 for ( ; __first != __last; ++__first) 6 __f(*__first); 7 return __f; 8 }
每次使用的时候都需要定义一个函数,有的时候只是想简单的处理一个小的功能,不想定义过多的函数。这样的话就可以考虑采用BOOST_FOREACH了。BOOST_FOREACH的定义在boost/foreach.hpp中。
简单的使用例子如下:
1 string hello("hello, boost!"); 2 BOOST_FOREACH(char ch, hello) 3 { 4 cout<< ch; 5 } 6 7 cout<<endl;
或者如下:
1 map<long long, CSession::Session_Ptr> CSessionManage::session_list_ 2 pair<long long, CSession::Session_Ptr> session_pair; 3 unsigned int session_num = 0; 4 5 BOOST_FOREACH(session_pair, session_list_) 6 { 7 if (session_type == session_pair.second->get_type()) 8 { 9 session_num++; 10 } 11 } 12 13 return session_num;
时间: 2024-11-09 00:42:49