C++ 算法 find()函数
C++算法的 find() 函数指定了参数列表中的一个值,在范围内搜索该值,迭代器从第一个元素开始搜索,直到最后一个元素,如果在范围内找到元素,则返回该元素,否则返回范围内的最后一个元素。
语法
template <class InputIterator, class T>
InputIterator find (InputIterator first, InputIterator last, const T& value);
参数
first :它指定了范围的第一个元素。
last :它指定了范围的最后一个元素。
value :它指定了在范围中正在搜索的值。
返回值
该函数返回一个迭代器,指向范围中第一个与值相等的元素。如果没有找到这样的元素,则函数返回最后一个元素。
示例1
#include <iostream>
#include <algorithm>
#include <vector>
int main ()
{
int newints[] = { 50, 60, 70, 80 };
int * q;
q = std::find (newints, newints+4, 60);
if (q != newints+4)
std::cout << "Element found in newints: " << *q << '\n';
else
std::cout << "Element not found in newints\n";
std::vector<int> newvector (newints,newints+4);
std::vector<int>::iterator ti;
ti = find (newvector.begin(), newvector.end(), 60);
if (ti != newvector.end())
std::cout << "Element found in newvector: " << *ti << '\n';
else
std::cout << "Element not found in newvector\n";
return 0;
}
输出:
Elements that are found in newints: 60
Elements that are found in newvector: 60
示例2
#include<iostream>
#include<algorithm>
#include<vector>
int main()
{
std:: vector<int> vct {50,60,70,80};
std::vector<int>::iterator ti;
std::cout<<"Initial vector:";
for(int k=0; k<vct.size(); k++)
std::cout<<" "<<vct[k];
std::cout<<"\n";
int sr = 60;
ti = std::find(vct.begin(), vct.end(),sr);
if(ti!=vct.end())
{
std::cout<< "The element "<<"has been found at position:";
std::cout<<ti-vct.begin() +1<<"\n";
}
else
std::cout<<"Element does not exist.\n \n";
return 0;
}
输出:
Intitial vector: 50 60 70 80
The element 30 has been found at position: 2
复杂度
该函数以线性方式移动,从第一个元素向最后一个元素移动。对于列表中的每个元素,都会检查“pred”的值。搜索会一直进行,直到遇到“pred”值不匹配的情况。
数据竞争
要么函数访问指定范围内的所有对象,要么访问其中的一些对象。
异常
如果任何一个参数抛出异常,该函数会抛出异常。