The INCLUSIVE range first .. last of elements equal to target, from one pass.
first is pf_lower_bound's answer and last is pf_upper_bound's minus one, so a
target that is absent comes back with last == first - 1 and last - first + 1 == 0.
Do not read values(first) without checking that count first.
Cheaper than calling the two bounds separately: the values are extracted once.