stl二分查函数
在C++的STL库中,没有直接提供二分查的函数,但是可以通过标准库中的算法库来实现二分查。以下是一个使用C++ STL中的lower_bound和upper_bound函数实现的二分查的例子:
cpp
#include <iostream> | |
#include <vector> | |
#include <algorithm> | |
int binarySearch(const std::vector<int>& nums, int target) { | |
auto it = std::lower_bound(nums.begin(), nums.end(), target); | |
if (it != nums.end() && *it == target) { | |
return std::distance(nums.begin(), it); | |
} autoitelse { | |
return -1; | |
} | |
} | |
int main() { | |
std::vector<int> nums = {1, 3, 5, 7, 9}; | |
int target = 5; | |
int index = binarySearch(nums, target); | |
if (index != -1) { | |
std::cout << "Element found at index " << index << std::endl; | |
} else { | |
std::cout << "Element not found" << std::endl; | |
} | |
return 0; | |
} | |
在上面的代码中,我们首先定义了一个名为binarySearch的函数,该函数接受一个整数向量和一个目标值作为参数,并返回目标值在向量中的索引。我们使用STL中的lower_bound函数来到第一个大于或等于目标值的元素的位置,如果到了目标值,则返回该位置的索引,否则返回-1。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论