The lower_bound you pointed to takes start/end iterators defining the partially-ordered range to examine.
The linked-to essay and the Wikipedia take array + size.
These are different APIs.
The latter - which is what this thread is about, IMO - is easier to implement because the sizes are always non-negative.
https://en.cppreference.com/w/cpp/named_req/RandomAccessIter...
they were conceived for c++'98 and transmogrified to a trait for c++20
the run time in GPs lower_bound link is log(n) for random access iterators and liner for non-random access.
But how does that change my observation about the differences in the two APIs?
The lower_bound you pointed to takes start/end iterators defining the partially-ordered range to examine.
The linked-to essay and the Wikipedia take array + size.
These are different APIs.
The latter - which is what this thread is about, IMO - is easier to implement because the sizes are always non-negative.