Chapter 9: The Ranges Library
The previous chapter was dedicated to understanding the three main pillars of the standard library: containers, iterators, and algorithms. Throughout that chapter, we used the abstract concept of range to represent a sequence of elements delimited by two iterators. The C++20 standard makes it easier to work with ranges by providing a ranges library, consisting of two main parts: on one hand, types that define non-owning ranges and adaptations of ranges, and on the other hand, algorithms that work with these range types and do not require iterators to define a range of elements.
In this final chapter, we will address the following topics:
- Moving from abstract ranges to the ranges library
- Understanding range concepts and views
- Understanding the constrained algorithms
- Writing your own range adaptor
By the end of this chapter, you will have a good understanding of the content of the ranges library and you will be able to write...