Chapter 34. Functors and Ranges
Syntactic Clutter
Many of the standard library algorithms operate on ranges, where a range is defined as a pair of iterators [Aust1999]. This abstraction is very powerful, and has been exploited to the degree that much of the STL, and, therefore, much of modern C++, relies upon it.
An example of this might be in a simple program to read in integers into a vector:
std::fstream f("integers.dat", std::ios::in | std::ios::out); std::copy( std::istream_iterator<int>(f) , std::istream_iterator<int>() , std::back_inserter(v2));
In this case, the second argument is a default-constructed iterator that acts as an indicator for the end of range. The two iterators are not connected in a physical sense; the implementation of ...
Get Imperfect C++ Practical Solutions for Real-Life Programming now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.