首页 > 试题广场 >

在C++中,以下哪些算法函数使用二分查找来查找元素?

[不定项选择题]
在C++中,以下哪些算法函数使用二分查找来查找元素?
  • std::binary_search()
  • std::lower_bound()
  • std::upper_bound()
  • std::equal_range() 
  1. std::binary_search

    • 功能:在已排序的序列中进行二分查找,检查一个值是否存在
    • 语法:bool binary_search(ForwardIterator first, ForwardIterator last, const T& val);
    • 参数:first 和 last 是序列的起始和结束迭代器,val 是要搜索的值。
    • 返回值:如果找到该值,则返回 true;否则返回 false。
  2. std::lower_bound

    • 功能:在已排序的序列中找到小于或等于某个值的第一个位置,即下界(lower bound)
    • 语法:ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, const T& val);
    • 参数:同上。
    • 返回值:返回一个指向小于或等于 val 的第一个元素的迭代器。如果所有元素都大于 val,则返回 last。
  3. std::upper_bound

    • 功能:在已排序的序列中找到大于某个值的第一个位置,即上界(upper bound)
    • 语法:ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last, const T& val);
    • 参数:同上。
    • 返回值:返回一个指向大于 val 的第一个元素的迭代器。如果所有元素都不大于 val,则返回 last。
  4. std::equal_range

    • 功能:在已排序的序列中找到与某个值相等的元素的范围,即下界和上界
    • 语法:std::pair<ForwardIterator, ForwardIterator> equal_range(ForwardIterator first, ForwardIterator last, const T& val);
    • 参数:同上。
    • 返回值:返回一个 std::pair,第一个元素是 lower_bound,第二个元素是 upper_bound。如果序列中没有这样的元素,则两个迭代器都指向大于 val 的第一个元素。
编辑于 2024-04-19 15:27:22 回复(0)