C++对vector使用lower_bound
时间: 2024-02-25 19:50:08 浏览: 75
C++对vector使用lower_bound可以实现在有序的vector中进行二分查找。lower_bound函数返回一个迭代器,指向第一个不小于给定值的元素。下面是一个示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
struct MyStruct {
int value;
};
bool compare(const MyStruct& a, const MyStruct& b) {
return a.value < b.value;
}
int main() {
std::vector<MyStruct> vec = {{1}, {2}, {3}, {4}, {5}};
MyStruct target = {3};
auto it = std::lower_bound(vec.begin(), vec.end(), target, compare);
if (it != vec.end() && it->value == target.value) {
std::cout << "Found at index: " << std::distance(vec.begin(), it) << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
return 0;
}
```
这段代码中,我们定义了一个结构体`MyStruct`,其中包含一个整数成员`value`。我们创建了一个有序的vector,并使用`lower_bound`函数在其中查找`target`结构体。如果找到了匹配的元素,就输出其索引;否则输出"Not found"。
阅读全文