Using std::span for contiguous sequences of objects
In C++17, the std::string_view
type was added to the standard library. This is an object that represents a view over a constant contiguous sequence of characters. The view is typically implemented with a pointer to the first element of the sequence and a length. Strings are one of the most used data types in any programming language. They have a non-owning view that does not allocate memory, avoids copies, and performs some operations faster than std::string
, which is an important benefit. However, a string is just a special vector of characters with operations specific to text. Therefore, it makes sense to have a type that is a view of a contiguous sequence of objects, regardless of their type. This is what the std::span
class template in C++20 represents. We could say that std::span
is to std::vector
and array types what std::string_view
is to std::string
.
Getting ready
The std::span
class template is available in the header...