21xrx.com
2024-11-25 00:18:19 Monday
登录
文章检索 我的文章 写文章
C++ lower_bound函数
2023-06-22 07:46:27 深夜i     --     --
C++ lower_bound函数 STL算法 二分查找 数据结构

C++ lower_bound函数是一个常用的STL(Standard Template Library)函数,可以在已排好序的容器(如数组)中查找某一个值第一次出现的位置,或是查找第一个大于该值的位置。它的用法如下:


template<class ForwardIt, class T>

ForwardIt lower_bound(ForwardIt first, ForwardIt last, const T& value);

其中,`first`和`last`分别指向容器的起始位置和结束位置,`value`是需要查找的值。函数返回一个迭代器,指向第一个不小于该值的元素位置。

这个函数的实现是基于二分查找算法的,因此它的时间复杂度为O(logn),要远快于线性查找的O(n)。

下面是一个例子,说明如何使用lower_bound函数:


#include <iostream>

#include <algorithm>

#include <vector>

using namespace std;

int main()

{

  vector<int> v 1;

  int value = 4;

  auto it = lower_bound(v.begin(), v.end(), value);

  if (it != v.end() && *it == value) {

    cout << "找到了:" << distance(v.begin(), it) << endl;

  } else

    cout << "没有找到" << endl;

  

  return 0;

}

这里,我们定义了一个`vector`容器,其中包含了一些整数。我们要查找其中第一个等于4的元素的位置。首先,我们使用`lower_bound`函数获得一个迭代器,指向第一个不小于4的元素位置。接着,我们判断这个位置是否有效,并且它是否等于查找的值。如果是的话,我们输出找到了该元素的位置。否则,输出没有找到。在这个例子中,输出结果为“找到了:3”。这是因为该向量中的第4个元素(从0开始计数)的值为4。

总之,C++的lower_bound函数是一个操作简单、高效的STL函数,可以方便地用来在有序容器中查找元素。对于需要频繁查找元素的程序来说,这个函数是一个不可或缺的工具。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复