在vector里用find
时间: 2024-10-29 17:15:50 浏览: 10
在C++标准库`<vector>`中,`find()`是一个成员函数,用于在一个已排序的`vector`容器中查找特定元素的第一个匹配项。这个函数的原型通常是这样的:
```cpp
iterator find(const value_type& val);
```
其中:
- `value_type`是你存储在向量中的元素类型。
- `iterator`是返回值类型,表示找到了的元素在向量中的迭代器位置。如果没有找到,则返回`end()`,即向量结束的迭代器。
基本使用示例如下:
```cpp
std::vector<int> vec = {10, 20, 30, 40, 50};
size_t index = vec.find(30); // 如果找到30,index将是它的索引,如2;如果没找到,index将是vec.size()
if (index != vec.end()) {
std::cout << "Element found at index: " << index << '\n';
} else {
std::cout << "Element not found.\n";
}
```
相关问题
vector find使用
`vector` 是 C++ 标准库中的容器,其中包含了很多有用的成员函数,其中之一就是 `find` 函数。它可以用于在 `vector` 中查找指定元素,并返回一个指向该元素的迭代器。
`find` 函数有两个重载版本:
1. `iterator find (const T& val)`:在 `vector` 中查找与 `val` 相等的元素,并返回指向该元素的迭代器。如果未找到,则返回指向 `vector` 结尾的迭代器(即 `vector.end()`)。
示例代码:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = std::find(vec.begin(), vec.end(), 3);
if (it != vec.end()) {
std::cout << "Element found at index: " << std::distance(vec.begin(), it) << std::endl;
} else {
std::cout << "Element not found" << std::endl;
}
```
输出:
```
Element found at index: 2
```
2. `iterator find (iterator first, iterator last, const T& val)`:在指定范围内查找与 `val` 相等的元素,并返回指向该元素的迭代器。如果未找到,则返回指向范围末尾的迭代器(即 `last`)。
示例代码:
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5};
auto it = std::find(vec.begin() + 2, vec.end(), 3);
vector find
std::vector::find是C++ STL中的一个函数,用于在std::vector中查找给定的元素。它返回一个迭代器,指向找到的元素,如果未找到,则返回一个指向容器末尾的迭代器。[1]
下面是一个使用std::vector::find的示例代码:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
int main() {
std::vector<int> v = {1, 2, 3, 4, 5};
auto it = std::find(v.begin(), v.end(), 3);
if (it != v.end()) {
std::cout << "Found 3 at position " << it - v.begin() << std::endl;
} else {
std::cout << "Did not find 3" << std::endl;
}
return 0;
}
```
在这个示例中,我们创建了一个包含整数的std::vector,并使用std::find函数查找数字3。如果找到了3,我们打印出它在容器中的位置,否则打印出未找到的消息。[2]
另外,你也可以使用命名空间std来简化代码,如下所示:
```cpp
#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;
}
```
这个示例中,我们使用std命名空间,省略了std::前缀,并使用find函数在vector中查找数字3。如果找到了3,我们输出"YES",否则输出"NO"。[3]
阅读全文