vector容器查找
时间: 2024-09-13 15:02:47 浏览: 62
`vector` 是 C++ 标准模板库(STL)中的一个动态数组容器,它可以存储任意类型的元素,并且能够根据需要自动扩展大小。`vector` 容器提供了多种查找元素的方法,包括线性查找和二分查找等。
1. **线性查找(Linear Search)**:
线性查找是最基本的查找方式,它通过遍历 `vector` 容器中的每一个元素直到找到目标元素为止。线性查找时间复杂度为 O(n),适用于未排序的 `vector`。
```cpp
std::vector<int> vec = {1, 3, 5, 7, 9};
int target = 5;
auto it = std::find(vec.begin(), vec.end(), target);
if (it != vec.end()) {
// 找到了元素,it 指向目标元素
} else {
// 没有找到元素
}
```
2. **二分查找(Binary Search)**:
二分查找是在有序 `vector` 中查找元素的有效方法,它将查找时间复杂度降低到 O(log n)。要使用二分查找,`vector` 必须是已排序的。
```cpp
#include <algorithm> // 引入算法头文件
std::vector<int> vec = {1, 3, 5, 7, 9};
std::sort(vec.begin(), vec.end()); // 确保vector是排序的
int target = 5;
auto it = std::lower_bound(vec.begin(), vec.end(), target);
if (it != vec.end() && *it == target) {
// 找到了元素,it 指向目标元素
} else {
// 没有找到元素
}
```
注意,如果 `target` 不在 `vector` 中,`lower_bound` 返回的迭代器指向第一个大于 `target` 的元素的位置。
阅读全文
相关推荐
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)