ForwardIterator1 search(ForwardIterator1 beg, ForwardIterator1 end, ForwardIterator2 searchBeg, ForwardIterator2 searchEnd);
ForwardIterator1 search(ForwardIterator1 beg, ForwardIterator1 end, ForwardIterator2 searchBeg, ForwardIterator2 searchEnd, BinaryPredicate op);
功能:
两种形式都返回第二个区间在第一个区间首次出现的位置(可以理解为:子区间在父区间首次出现的位置)
a、第一形式中,子区间元素必须完全等于[searchBeg, searchEnd)的元素
b、第二形式中,子区间元素和[searchBeg, searchEnd)的对应元素必须使op(elem, searchElem)结果为true
c、如果没有找到匹配子区间,两种形式都返回end
d、注意op在函数调用过程中不应该改变自身状态
e、op不应该改动传进来的参数
f、时间复杂度:线性
int main(int argc, char *argv[])
{
/************search的使用************/
int arr2[] = {5,8,1,4,8,1};
vector<int> vec4(arr2, arr2 + sizeof(arr2)/sizeof(arr2[0]));
vector<int> vec5;
vec5.push_back(8);
vec5.push_back(1);
vector<int>::iterator iterVec4 = search(vec4.begin(), vec4.end(), vec5.begin(), vec5.end());
if (iterVec4 != vec4.end())
cout << "vec4的元素包含在vec5容器中,起始元素为" << "vec4[" << iterVec4 - vec4.begin() << "]" <<endl;
else
cout << "vec5的元素不包含在vec4容器" << endl;
return 0;
}