Поиск карты с верхней границей и нижней границей

Вопрос в STL:

Что касается функций std:: map:: upper_bound и std:: map:: lower_bound, то допустимо указать ключ, который на самом деле не присутствует на карте?

Пример

std::map<int,int> intmap;
std::map<int,int>::iterator it1,it2;

intmap[1]=10;
intmap[2]=20;
intmap[4]=40;
intmap[5]=50;

it1=intmap.lower_bound (3);  // Is this valid?
it2=intmap.upper_bound (3);   // Is this valid?

Спасибо...

Ответы

Ответ 1

Да, они оба действительны.

map::lower_bound возвращает итератор, указывающий на первый элемент, который не меньше, чем ключ.

map::upper_bound возвращает итератор, указывающий на первый элемент, который больше, чем ключ.

intmap[1]=10;
intmap[2]=20;
intmap[4]=40;   // <<---both lower_bound(3)/upper_bound(3) will points to here
intmap[5]=50;

lower_bound/upper_bound вернуть позицию, в которую будет вставлено значение .

Примечание. Если вы хотите проверить ключ значения, это карта или нет, вы можете использовать std:: map:: find