Для этого можно использовать map::lower_bound
и map::upper_bound
, если вы заранее знаете значение среднего уровня.
map<int, MyClass>::const_iterator lower =
myMap.lower_bound(-30); // or -70 if you prefer
map<int, MyClass>::const_iterator upper = myMap.lower_bound(70);
Оба итератора должны быть проверены на myMap.end()
перед разыменованием.
Этот фрагмент основан на том, что ваш порядок является обычным возрастающим порядком - пользовательский порядок может изменить это так, что после + ve появляются цифры -ve. Нет лучшего способа сделать это - с помощью построения map
в виде двоичного дерева это будет эффективно.
См. Также онлайн-примеры для lower_bound и upper_bound .
Обратите внимание, что DWORD
без знака, поэтому использование отрицательных чисел на вашей карте может привести к ошибке предупреждения, а -70 неожиданно> 70.