lower_bound 和 upper_bound
时间: 2023-11-12 15:00:28 浏览: 176
lower_bound 和 upper_bound 是 C++ STL 中的两个函数,都用于在有序序列中查找某个元素的位置。
lower_bound 函数的作用是在有序序列中查找第一个大于等于给定值的元素的位置,如果所有元素都小于给定值,则返回序列的长度。
upper_bound 函数的作用是在有序序列中查找第一个大于给定值的元素的位置,如果所有元素都小于等于给定值,则返回序列的长度。
这两个函数都需要传入两个迭代器和一个要查找的值,返回一个迭代器指向查找到的位置。
举个例子,假设有一个有序数组 arr,我们要查找第一个大于等于 5 的元素的位置,可以这样写:
auto it = lower_bound(arr.begin(), arr.end(), 5);
如果要查找第一个大于 5 的元素的位置,可以这样写:
auto it = upper_bound(arr.begin(), arr.end(), 5);
相关问题
c++ lower_bound和upper_bound
lower_bound和upper_bound都是C++标准库中的算法函数,用于在有序序列中查找某个值的下界和上界。
lower_bound函数接受两个参数:第一个参数是指向有序序列的起始位置的迭代器,第二个参数是要查找的值。它返回一个迭代器,指向序列中第一个大于或等于给定值的元素。如果所有元素都小于给定值,则返回指向序列尾部的迭代器。
upper_bound函数也接受两个参数,与lower_bound函数类似。它返回一个迭代器,指向序列中第一个大于给定值的元素。换句话说,upper_bound返回的迭代器指向的元素是大于给定值的最小元素。如果所有元素都小于或等于给定值,则返回指向序列尾部的迭代器。
这两个函数通常用于有序序列中进行二分查找。可以根据返回的迭代器判断是否找到了目标值,以及得到目标值在序列中的位置或范围。
注意:lower_bound和upper_bound函数要求序列是有序的,否则结果将不确定。
二叉树的lower_bound和upper_bound
二叉树的lower_bound和upper_bound是用于查找给定值的边界的函数。
1. lower_bound:在二叉树中查找第一个大于等于给定值的节点。如果存在这样的节点,则返回该节点的指针;如果不存在,则返回nullptr。lower_bound函数的时间复杂度为O(logN),其中N是二叉树中节点的数量。
2. upper_bound:在二叉树中查找第一个大于给定值的节点。如果存在这样的节点,则返回该节点的指针;如果不存在,则返回nullptr。upper_bound函数的时间复杂度为O(logN),其中N是二叉树中节点的数量。
这两个函数通常用于有序二叉树(例如二叉搜索树)中,可以帮助我们快速定位给定值在二叉树中的位置或者插入位置。
阅读全文
相关推荐
















