📌  相关文章
📜  在C++中非递增向量的upper_bound和lower_bound

📅  最后修改于: 2021-05-30 15:59:38             🧑  作者: Mango

默认情况下,lower_bound()和upper_bound()函数适用于非递减数组。 lower_bound()函数查找第一个元素的迭代器,该迭代器与给定元素的比较不小。 upper_bound()函数将迭代器返回到更大的第一个元素。

给定一个将其转换为非递增向量的数组,将std :: upper_bound和std :: lower_bound函数应用于该向量

对于以非递增数组排序的数组,lower_bound()查找迭代到第一个元素的迭代器,该迭代器的总和不大于给定元素。 upper_bound()查找小于给定元素的第一个元素的迭代器。为此,我们使用Greater()。

// C++ program to demonstrate the working of lower_bound()
// and upper_bound() for array sorted in non-decreasing
// array,
#include 
#include 
#include 
  
int main()
{
    int unsorted[10] = { 3, 3, 2, 1, 5, 5, 4, 3, 7, 8 };
    std::vector 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());
  
    std::vector::iterator low, up;
    low = std::lower_bound(v.begin(), v.end(), 3, std::greater());         
    up = std::upper_bound(v.begin(), v.end(), 5, std::greater());          
  
    std::cout << "lower_bound at position " << (low - v.begin()) << '\n';
    std::cout << "upper_bound at position " << (up - v.begin()) << '\n';
  
    return 0;
}
输出:
lower_bound at position 5
upper_bound at position 4
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”