В соответствии с cppreference.com
Возвращаемое значение
std :: pair, содержащий пару итераторов, определяющих требуемый диапазон, первый указывает на первый элемент, который не меньше значения, а второй указывает на первый элемент, больший значения.
Если нет элементов, не меньших значения, последний возвращается как первый элемент. Аналогично, если нет элементов больше значения, последний возвращается как второй элемент.
Согласно жирному тексту, правильно ли предполагать следующее?
auto p = equal_range(map.begin(), map.end(), value);
if(p.first && p.second){//there is a valid range}
else{//there is no valid range}
Задача ещё не решена.
Других решений пока нет …