C++STL的非變易算法(Non-mutating algorithms)是一組不破壞操作數據的模板函數,用來對序列數據進行逐個處理、元素查找、子序列搜索、統計和匹配。
find_first_of算法用於查找位於某個范圍之內的元素。它有兩個使用原型,均在迭代器區間[first1, last1)上查找元素*i,使得迭代器區間[first2, last2)有某個元素*j,滿足*i ==*j或滿足二元謂詞函數comp(*i, *j)==true的條件。元素找到則返回迭代器i,否則返回last1。
函數原型:
template<class ForwardIterator1, class ForwardIterator2>
ForwardIterator1 find_first_of(
ForwardIterator1 _First1,
ForwardIterator1 _Last1,
ForwardIterator2 _First2,
ForwardIterator2 _Last2
);
template<class ForwardIterator1, class ForwardIterator2, class BinaryPredicate>
ForwardIterator1 find_first_of(
ForwardIterator1 _First1,
ForwardIterator1 _Last1,
ForwardIterator2 _First2,
ForwardIterator2 _Last2,
BinaryPredicate _Comp
);
示例代碼:
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
const char* strOne = "abcdef1212daxs";
const char* strTwo = "2ef";
const char* result = find_first_of(strOne, strOne + strlen(strOne),
strTwo, strTwo + strlen(strTwo));
cout << "字符串strOne中第一個出現在strTwo的字符為:"
<< *result << endl;
return 0;
}
摘自:Jerry.Jiang的程序人生