STLalgorithm算法find_first_of(18)
原文地址:http://www.cplusplus.com/reference/algorithm/find\_first\_of/
function template
std::find_first_of
- C++98
- C++11
equality (1)
template <class InputIterator, class ForwardIterator>
ForwardIterator1 find_first_of (InputIterator first1, InputIterator last1,
ForwardIterator first2, ForwardIterator last2);
predicate (2)
template <class InputIterator, class ForwardIterator, class BinaryPredicate>
ForwardIterator1 find_first_of (InputIterator first1, InputIterator last1,
ForwardIterator first2, ForwardIterator last2,
BinaryPredicate pred);
Find element from set in range
Returns an iterator to the first element in the range [first1,last1)
that matches any of the elements in [first2,last2)
. If no such element is found, the function returns last1.
返回一个迭代器,指向范围[first1,last1)中第一个匹配到[first2,last1)中的任一(并不要求全部匹配)元素。如果没有匹配的,则返回last1.
例子:
#include
#include
#include
#include
using namespace std;
void findfirstof()
{
vector
int arr[]={4,8};
array<double,2> ai{77,88};
cout<<"v1=";
for(int &i:v1)
cout<<i<<" ";
cout<<endl;
cout<<"arr=";
for(int &i:arr)
cout<<i<<" ";
cout<<endl<<"ai=";
for(double &i:ai)
cout<<i<<" ";
cout<<endl<<"auto it=find\_first\_of(v1.begin(),v1.end(),arr,arr+2);"<<endl;
auto it=find\_first\_of(v1.begin(),v1.end(),arr,arr+2);
cout<<"\*(it-1)="<<\*(it-1)<<endl;
cout<<"\*it="<<\*it<<endl;
cout<<"\*(it+1)="<<\*(it+1)<<endl;
cout<<endl<<"auto it2=find\_first\_of(v1.begin(),v1.end(),ai.begin(),ai.end());"<<endl;
auto it2=find\_first\_of(v1.begin(),v1.end(),ai.begin(),ai.end());
cout<<"\*(it2-1)="<<\*(it2-1)<<endl;
cout<<"\*it2="<<\*it2<<endl;
cout<<"\*(it2+1)="<<\*(it2+1)<<endl;
}
例子:
可以看到,只要匹配到一个元素符号要求,就返回。
The elements in [first1,last1)
are sequentially compared to each of the values in [first2,last2)
using operator==
(orpred, in version (2)), until a pair matches.
[first1,last1)中的每一个元素依次和[first2,last2)中的每一个元素匹配,直到一个匹配出现。
The behavior of this function template is equivalent to:
(仔细看下面的代码就能看出来)
1 | 1 |
1 | template<class InputIterator, class ForwardIterator> |
Parameters
first1, last1
- C++98
- C++11
Input iterators to the initial and final positions of the searched sequence. The range used is [first1,last1)
, which contains all the elements between first1 and last1, including the element pointed by first1 but not the element pointed by last1.
first2, last2
Forward iterators to the initial and final positions of the element values to be searched for. The range used is[first2,last2)
.
For (1), the elements in both ranges shall be of types comparable using operator==
(with the elements of the first range as left-hand side operands, and those of the second as right-hand side operands).
pred
Binary function that accepts two elements as arguments (one of each of the two sequences, in the same order), and returns a value convertible to bool
. The value returned indicates whether the elements are considered to match in the context of this function.
The function shall not modify any of its arguments.
This can either be a function pointer or a function object.
Return value
An iterator to the first element in [first1,last1)
that is part of [first2,last2)
.
If no matches are found, the function returns last1.
- C++98
- C++11
If [first2,last2)
is an empty range, the result is unspecified.
返回一个迭代器,指向范围[first1,last1)中第一个匹配到[first2,last1)中的任一(并不要求全部匹配)元素。如果没有匹配的,则返回last1.
Example
1 | 1 |
1 | // find_first_of example |
Output:
The first match is: A
The first match is: a
Complexity
Up to linear in count1*count2
(where countX is the distance between firstX and lastX): Compares elements until a match is found.
Data races
Some (or all) of the objects in both ranges are accessed (once at most in the case of [first1,last1)
, and possibly more than once in [first2,last2)
).
Exceptions
Throws if any element comparison (or pred) throws or if any of the operations on iterators throws.
Note that invalid arguments cause undefined behavior.
——————————————————————————————————————————————————————————————————
//写的错误或者不好的地方请多多指导,可以在下面留言或者点击左上方邮件地址给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。
转载请注明出处:http://blog.csdn.net/qq844352155
author:天下无双
Email:coderguang@gmail.com
2014-9-12
于GDUT
——————————————————————————————————————————————————————————————————
- 本文作者: royalchen
- 本文链接: http://www.royalchen.com/2016/02/24/stlalgorithm算法find-first-of18/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!