vector数组查找
时间: 2023-08-23 14:07:43 浏览: 109
在C++中,可以使用`std::vector`容器进行数组的查找操作。`std::vector`提供了多种查找函数,包括线性查找和二分查找。
1. 线性查找:可以使用`std::find`函数进行线性查找,该函数在`<algorithm>`头文件中。它接受两个迭代器作为参数,表示要查找的范围,以及要查找的值。如果找到了该值,返回指向该元素的迭代器;如果未找到,则返回指向尾后位置的迭代器。
示例代码:
```cpp
#include <vector>
#include <algorithm>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5};
int target = 3;
auto it = std::find(nums.begin(), nums.end(), target);
if (it != nums.end()) {
std::cout << "Found at index: " << std::distance(nums.begin(), it) << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
return 0;
}
```
2. 二分查找:如果`std::vector`中的元素是有序的,可以使用`std::binary_search`函数或`std::lower_bound`函数进行二分查找。`std::binary_search`返回一个bool值,表示是否找到了目标值;`std::lower_bound`返回一个指向第一个不小于目标值的元素的迭代器。
示例代码:
```cpp
#include <vector>
#include <algorithm>
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5};
int target = 3;
bool found = std::binary_search(nums.begin(), nums.end(), target);
if (found) {
std::cout << "Found" << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
auto it = std::lower_bound(nums.begin(), nums.end(), target);
if (it != nums.end() && *it == target) {
std::cout << "Found at index: " << std::distance(nums.begin(), it) << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
return 0;
}
```
注意:以上示例代码仅为演示查找操作的基本用法,实际使用时需要根据具体需求进行适当的修改。
阅读全文