STL find函数

STL find函数算法

STL 中,find() 函数本质上是一个模板函数,用于在指定范围内查找和目标元素值相等的第一个元素。

STL find函数详解

头文件

#include <algorithm>

语法

InputIterator find (InputIterator first, InputIterator last, const T& val);

参数

参数 描述
first 输入迭代器
last 输入迭代器
val 要查找的元素

说明

其中,first 和 last 为输入迭代器,[first, last) 用于指定该函数的查找范围;val 为要查找的目标元素。正因为 first 和 last 的类型为输入迭代器,因此该函数适用于所有的序列式容器。

技术细节

该函数会返回一个输入迭代器,当 find() 函数查找成功时,其指向的是在 [first, last) 区域内查找到的第一个目标元素;如果查找失败,则该迭代器的指向和 last 相同。

值得一提的是,find() 函数的底层实现,其实就是用==运算符将 val 和 [first, last) 区域内的元素逐个进行比对。这也就意味着,[first, last) 区域内的元素必须支持 == 运算符。

案例

STL find函数

使用 STL find 函数查找集合

#include <iostream> #include <algorithm> #include <cstring> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; char str[] = "https://www.haicoder.net"; char * p = find(str, str + strlen(str), 'n'); if (p != str + strlen(str)) { cout << p << endl; } vector<int> myvector{1024, 99, 100, 101}; vector<int>::iterator it; it = find(myvector.begin(), myvector.end(), 99); if (it != myvector.end()) { cout << "查找成功:" << *it; } else { cout << "查找失败"; } cout << endl; return 0; }

我们在 Linux 下使用 g++ 进行编译,具体命令如下:

g++ find.cpp -std=c++11

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

10_STL find函数.png

我们首先,使用了 find 函数,分别在数组中查找了元素和在 vector 中查找了元素。

STL find函数总结

在 STL 中,find() 函数本质上是一个模板函数,用于在指定范围内查找和目标元素值相等的第一个元素。