upper_bound и lower_bound для нерастущего вектора в c ++
Опубликовано: 30 Декабря, 2021
Функции lower_bound () и upper_bound () по умолчанию работают с неубывающим массивом. Функция lower_bound () находит итератор первого элемента, который не сравнивается с данным элементом. Функция upper_bound () возвращает итератор к первому большему элементу.
Учитывая массив, преобразующий это в невозрастающий вектор, применяя функции std :: upper_bound и std :: lower_bound к вектору
Для массива, отсортированного в невозрастающий массив, lower_bound () находит итератор для первого элемента, который не сравнивается больше, чем с данным элементом. upper_bound () находит итератор для первого элемента, который меньше заданного элемента. Для этого мы используем больше ().
// C++ program to demonstrate the working of lower_bound() // and upper_bound() for array sorted in non-decreasing // array, #include <algorithm> #include <iostream> #include <vector> int main() { int unsorted[10] = { 3, 3, 2, 1, 5, 5, 4, 3, 7, 8 }; std::vector< int > v(unsorted, unsorted + 10); // sorting vector in non increasing order. Vector // becomes {8, 7, 5, 5, 4, 3, 3, 3, 2, 1} std::sort(v.begin(), v.end(), std::greater< int >()); std::vector< int >::iterator low, up; low = std::lower_bound(v.begin(), v.end(), 3, std::greater< int >()); up = std::upper_bound(v.begin(), v.end(), 5, std::greater< int >()); std::cout << "lower_bound at position " << (low - v.begin()) << '
' ; std::cout << "upper_bound at position " << (up - v.begin()) << '
' ; return 0; } |
Выход:
lower_bound в позиции 5 upper_bound в позиции 4
Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .