$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Shunsuke Sogame (mb2act_at_[hidden])
Date: 2006-03-08 01:46:56
Andy Little wrote:
> FWIW Heres some sample code. Its seems a bit lopsided!
> 
>  std::ofstream out("toolpath_out.txt");
> 
>     BOOST_FOREACH(boost::shared_ptr<section> sp,vect){
> 
>         if (sp->m_action == section::reverse){
>            for( std::vector<std::string>::reverse_iterator iter
>                 = sp->m_vector.rbegin();
>                     iter != sp->m_vector.rend();
>                         ++iter){
>                 out << *iter << '\n';
>             }
>         }
>         else {
>             BOOST_FOREACH(std::string str,sp->m_vector){
>                 out << str << '\n';
>             }
>         }
>     }
> 
> Are there any plans for a BOOST_REVERSE_FOREACH?
I hear the new range library is under construction,
which will enable:
     BOOST_FOREACH (int x, vect|reversed) {
     }
A current workaround is maybe something like:
     template< class Range >
     boost::iterator_range<
         boost::reverse_iterator<
             typename boost::range_result_iterator<Range>::type
         >
     >
     make_reverse_range(Range& rng)
     {
         return boost::make_iterator_range(
             boost::make_reverse_iterator(boost::end(rng)),
             boost::make_reverse_iterator(boost::begin(rng))
         );
     }
     BOOST_FOREACH (int x, ::make_reverse_range(vect)) {
     }
-- Regards, Shunsuke Sogame