string: string a="ojbk";
int t=a.find('o'); t=0 int t=a.find('o',0); t=0 *注:返回坐标; 第二个是从下标0开始查找
int t=a.find("oj") t=0 int t=a.find("oj",0) t=0 *注:返回坐标,查找字符串的第一个字符的坐标.第二个是从下标0开始查找
string在c++其实可以算是数据结构的一种 在c++的数据结构中string都会单独拿出一章来说 它具有自己单独的库,还是很强的。
find用在容器中更加普遍,而algorithm中其实find函数只是一种,还有很多swap,sort等。
(2)容器 我就不一一说了,常见的是set,vector,map等.
(a) :set和map都是自带红黑树的,会自己进行排序,他们的关系我就不谈,自行百度(他们自身带有find的函数)。
find(InputIterator first,InputIterator last,const T&val);
vector<int> v1;
for(int i=0;i<10;++i)
v1.push_back(i);//把元素储存到v1
auto it=find(v1.begin(),v1.end(),2); //在v.begin() 到 v.end() 的范围内;查找2; map/set 可以 map.find() set.find();
返回的是迭代器即是 vector<int>::iterator ;如果没有找到 it=v1.end();
函数原型:
template<class InputIterator, class T>
InputIterator find (InputIterator first, InputIterator last, const T& val)
{
while (first!=last) {
if (*first==val) return first;
++first;
}
return last;
}
(b):
find_if(InputIterator first,InputIterator last,UnaryPredicate pred);
参数:一元函数,接受范围中的元素作为参数,并返回可转换为的值bool
。返回值指示该元素在此函数的上下文中是否被认为是匹配的。该函数不得修改其参数。
这可以是一个函数指针或一个函数对象。
bool s (int i) {
return ((i%2)==0);
}
vector<int> v1;
for(int i=0;i<10;++i)
v1.push_back(i);//把元素储存到v1
auto it=find_if(v1.begin(),v1.end(),s);//找到第一个偶数值. *it=2;