Because that constructor is the typical begin
-end
constructor:
template< class InputIt >
vector( InputIt first, InputIt last,
const Allocator& alloc = Allocator() );
which copies the content from first
to last
(not included) and does not take ownership of the allocated dynamic array.
Most of the STL's algorithms uses the [begin, end)
range, and for consistency, also does this constructor.