vector 中的find
时间: 2024-08-22 15:03:15 浏览: 21
`std::vector<T>` 是 C++ 标准库中的动态数组,它提供了一个 `find` 函数用于在一个已排序的向量中查找指定元素的位置。这个函数的原型通常如下:
```cpp
size_type find(const value_type& val);
```
这里的 `value_type` 是向量元素的数据类型,`size_type` 则是表示索引的一个类型,通常是 `std::size_t`。
`find` 函数的工作原理是在已排序的向量中从左到右搜索第一个等于给定值的元素。如果找到该元素,返回该元素的下标(从0开始计数),即第一个匹配项的索引;如果没有找到,返回 `end()`,它是 `vector` 的一个迭代器,指向向量结束位置的前一个位置。
示例代码:
```cpp
std::vector<int> v = {1, 2, 3, 4, 5};
auto it = v.find(3); // 如果找到了3,it会指向3的位置
if (it != v.end()) {
std::cout << "Found at position: " << it - v.begin() << std::endl; // 输出3的索引
} else {
std::cout << "Element not found." << std::endl;
}
```
相关问题
vector中find的用法
在C++的STL中,vector是一个非常常用的容器,而find函数则是vector容器中的一个常用函数。它可以在vector中查找指定元素,并返回该元素的迭代器。下面是两个使用find函数的例子:
1. 在vector<int>中查找元素3
```c++
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
vector<int> L;
L.push_back(1);
L.push_back(2);
L.push_back(3);
vector<int>::iterator it = find(L.begin(), L.end(), 3);
if (it == L.end())
cout << "NO" << endl;
else
cout << "YES" << endl;
}
```
2. 在vector<string>中查找指定字符串
```c++
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
vector<string> nameList1;
// 给nameList1赋值
string name;
if (find(nameList1.begin(), nameList1.end(), name) == nameList1.end()) {
// 没有找到
} else {
// 找到了
}
}
```
vector中find如何使用
在 C++ 的 STL 中,vector 类型提供了一个成员函数 find() 来查找指定元素在 vector 中的位置。该函数的语法如下:
```c++
vector_name.find(element);
```
其中,vector_name 表示要查找的 vector 对象名称,element 表示要查找的元素。
find() 函数会在 vector 中查找指定的元素,如果找到则返回该元素在 vector 中的迭代器,否则返回 vector 的末尾迭代器 end()。
下面是一个示例代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> vec = { 1, 2, 3, 4, 5 };
int target = 3;
auto iter = find(vec.begin(), vec.end(), target);
if (iter != vec.end()) {
cout << "Found target at position " << iter - vec.begin() << endl;
}
else {
cout << "Target not found" << endl;
}
return 0;
}
```
上述代码中,我们定义了一个 vector 对象 vec,然后使用 find() 函数查找元素 3 在 vec 中的位置。如果找到则输出该元素在 vector 中的位置,否则输出 "Target not found"。注意,我们使用了 auto 类型推导来自动推导出迭代器类型。