pythonfind()函数的功能和⽤法_C++find()函数⽤法详解
(超级详细)
find() 函数本质上是⼀个模板函数,⽤于在指定范围内查和⽬标元素值相等的第⼀个元素。
如下为 find() 函数的语法格式:
InputIterator find (InputIterator first, InputIterator last, const T& val);
其中,first 和 last 为输⼊迭代器,[first, last) ⽤于指定该函数的查范围;val 为要查的⽬标元素。
正因为 first 和 last 的类型为输⼊迭代器,因此该函数适⽤于所有的序列式容器。
另外,该函数会返回⼀个输⼊迭代器,当 find() 函数查成功时,其指向的是在 [first, last) 区域内查到的第⼀个⽬标元素;如果查失败,则该迭代器的指向和 last 相同。
值得⼀提的是,find() 函数的底层实现,其实就是⽤==运算符将 val 和 [first, last) 区域内的元素逐个进⾏⽐对。这也就意味着,[first, last) 区域内的元素必须⽀持==运算符。
举个例⼦:
#include // std::cout
#include // std::find
#include // std::vector
using namespace std;
int main() {
//find() 函数作⽤于普通数组
char stl[] ="c.biancheng/stl/";
//调⽤ find() 查第⼀个字符 'c'
char * p = find(stl, stl + strlen(stl), 'c');
//判断是否查成功
if (p != stl + strlen(stl)) {
cout << p << endl;
}
//find() 函数作⽤于容器
std::vector myvector{ 10,20,30,40,50 };
std::vector::iterator it;
it = find(myvector.begin(), d(), 30);
if (it != d())
cout << "查成功:" << *it;
else
cout << "查失败";
const的作用return 0;
}
程序执⾏结果为:
c.biancheng/stl/
查成功:30
可以看到,find() 函数除了可以作⽤于序列式容器,还可以作⽤于普通数组。
对于 find() 函数的底层实现,C++ 标准库中给出了参数代码,感兴趣的读者可⾃⾏研究:template
InputIterator find (InputIterator first, InputIterator last, const T& val)
{
while (first!=last) {
if (*first==val) return first;
++first;
}
return last;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论