Boost logo

Boost Users :

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

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net