Is there a type in the standard for storing the begin- and end-iterators of a container?

Is there a type in the standard for storing the begin- and end-iterators of a container?

Your description matches closely with the concept of a range.

std::ranges::subrange can be created from a pair of iterators. That will be templated based on the iterator type.

If you need to hide the iterator type for runtime polymorphism, you would need ranges::any_view which unfortunately isn't in the standard implementation of the ranges. Furthermore, there is a runtime cost associated with it.

For contiguous containers, another alternative is std::span which can point to any contiguous range without the cost of type erasure. For strings in particular, yet another alternative is std::string_view.