|
Boost : |
From: Neal Becker (ndbecker2_at_[hidden])
Date: 2008-01-10 08:44:13
Oops, forgot to send this:
template<typename range_type>
struct bounded_iterator_type {
typedef bounded_iterator<typename boost::range_iterator<range_type>::type> type;
};
Neal Becker wrote:
> Maybe add these:
>
> template<typename range_type>
> inline bounded_iterator<typename boost::range_iterator<range_type>::type>
> make_bounded_iterator (range_type & r) {
> return bounded_iterator<typename
> boost::range_iterator<range_type>::type> (r);
> }
>
> template<typename range_type>
> inline bounded_iterator<typename boost::range_iterator<range_type>::type>
> make_bounded_iterator (range_type const& r) {
> return bounded_iterator<typename
> boost::range_iterator<range_type>::type> (r);
> }
>
> Now you can do:
>
> template<typename out_t, typename in_t>
> inline out_t Map (in_t const& in) const {
> out_t out (boost::size (in));
> typename boost::range_iterator<out_t>::type o = boost::begin (out);
> typename bounded_iterator_type<in_t>::type i =
> make_bounded_iterator<in_t> (in);
>
> for (; i; ++i, ++o)
> *o = Map1 (*i);
>
> return out;
> }
>
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk