Subject: [Boost-bugs] [Boost C++ Libraries] #1756: Proposal to add make_view iterator range generator
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2008-04-02 15:22:36
#1756: Proposal to add make_view iterator range generator
---------------------------------------------+------------------------------
Reporter: andysem_at_[hidden] | Owner: nesotto
Type: Patches | Status: new
Milestone: Boost 1.36.0 | Component: range
Version: Boost Development Trunk | Severity: Not Applicable
Keywords: range, view, transform_iterator |
---------------------------------------------+------------------------------
I propose to add a simple helper function to create an iterator range of
boost::transform_iterators. This would effectively create a view over a
different range or a container.
Currently this is possible to do with considerable code duplication:
make_iterator_range(
make_transform_iterator(vec.begin(), fun),
make_transform_iterator(vec.end(), fun));
Here "fun" could be a rather complex lambda or bind expression. What I
propose is to wrap these calls into a simple generator make_view. The
above code would look much better:
make_view(vec.begin(), vec.end(), fun);
or
make_view(vec, fun);
I've attached a sample implementation of the make_view function.
PS: This straightforward implementation is quite sufficient for me and,
IMHO, for most cases. However, one might want to optimize it by storing
only one copy of the function object in the view or even deriving the view
from it to make use of EBO. This imply that transform_iterator would have
to be replaced with another equivalent that does not store the function
object internally.
--
Ticket URL: <http://svn.boost.org/trac/boost/ticket/1756>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:49:57 UTC