[Boost-bugs] [Boost C++ Libraries] #1756: Proposal to add make_view iterator range generator

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