在 C++ 中,lower_bound
函數用于返回在已排序的區間中,第一個不小于給定值的元素的位置。
下面是 lower_bound
函數的語法:
std::vector<int>::iterator lower_bound (std::vector<int>::iterator first, std::vector<int>::iterator last, const int& val);
在使用 lower_bound
函數時,首先需要確保區間已經按照升序排序。然后傳入函數三個參數:指向區間起始位置的迭代器 first
,指向區間末尾位置的迭代器 last
,以及要查找的值 val
。
lower_bound
函數會在指定區間內搜索不小于給定值 val
的第一個元素,并返回指向該元素的迭代器。如果找不到符合條件的元素,則返回指向區間末尾的迭代器 last
。
以下是一個簡單的示例代碼,演示如何使用 lower_bound
函數:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9};
// 查找不小于 5 的第一個元素的位置
std::vector<int>::iterator it = std::lower_bound(vec.begin(), vec.end(), 5);
if (it != vec.end()) {
std::cout << "第一個不小于5的元素位置為:" << std::distance(vec.begin(), it) << std::endl;
} else {
std::cout << "未找到符合條件的元素" << std::endl;
}
return 0;
}
在上面的示例中,lower_bound
函數會在 vec
中查找不小于 5 的第一個元素,因為 vec 已經是升序排序的,所以返回的迭代器指向 5。