如何使用lower_bound(upper_bound)查找数组中任意数字的位置?

Nod*_*ili 4 c++ algorithm lower-bound upperbound

例如,我有一个元素为 1,7,9,23,34,47,67,89,123,234,345,567 的数组。我需要知道123的位置。

Use*_*yen 8

使用元素声明并初始化数组。然后创建一个vector整数。使用upper_bound()vector。下面是一个例子:

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

int main() {
    int arr[] = {1,7,9,23,34,47,67,89,123,234,345,567};
    int len = sizeof(arr)/sizeof(arr[0]);
    vector<int> v(arr,arr+len);

    vector<int>::iterator upper;
    upper = upper_bound(v.begin(), v.end(), 123);
    cout<<(upper-v.begin())<<endl;  // Output: 9

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!!

  • 你可以直接在数组上使用 `std::upper_bound` 和 `std::lower_bound`。不需要那个向量。 (5认同)
  • `std::upper` 返回第一个大于所查找值的值。例如,如果您寻找值 122,您仍然会得到位置 9(或者更确切地说,8),即使您寻找的值没有找到。 (2认同)