upper_bound
на самом деле идеально подходит для итерации, потому что он указывает на элемент сразу после конца диапазона - как и end
.Таким образом, вы формируете свой цикл аналогично.
for (auto it = mymap.lower_bound(start_key), end = mymap.upper_bound(end_key); it != end; ++it)
Если вам нужен только один ключ, передайте одно и то же значение в lower_bound
и upper_bound
или используйте equal_range
, чтобы получить оба сразу.Если значение вообще не существует на карте, lower_bound
и upper_bound
будут равны и цикл не будет выполняться.