|
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