en.cppreference.com/w/cpp/container/vector/end

meets all requirements of a
RandomAccessIteratorWritten expectations about C++ types and objects
Used in the C++ standard to state those expectations
One requirement can be used to define another
Usually paired with some helpers that express those expectations in the code
en.cppreference.com/w/cpp/named_reqDefaultConstructible
Predicate
The base set of requirements for all iterators
src: meme-arsenal.com/memes/bda3710e8c0f496156f70ee6b76a6b36.jpg
src: carbide-red.com/comp/double_drive.jpg
Used by std::map and std::set
But also std::reverse_copy and std::random_shuffle
Used by std::vector

C++20 Ranges in Practice - Tristan Brindle
youtube.com/watch?v=d_E-VLyUnzcFrom STL to Ranges: Using Ranges Effectively - Jeff Garland
youtube.com/watch?v=vJ290qlAbbw