InputIterator search_n (InputIterator beg, InputIterator end, Size count, const T& value);
InputIterator search_n (InputIterator beg, InputIterator end, Size count, const T& value, BinaryPredicate op);
功能:
第一形式返回区间[beg, end)中的第一组“连续count个元素值全等于value”的元素位置
第二形式返回区间[beg, end)中的第一组“连续count个元素使op(elem, value)结果为true”的元素位置
a、如果没有找到匹配元素,两种形式都返回end
b、注意op在函数调用过程中不应该改变自身状态
c、op不应该改动传进来的参数
d、时间复杂度:线性
bool twice(const int para1, const int para2)
{
return ((2 * para1) == para2);
}
int main(int argc, char *argv[])
{
/************search_n的使用************/
int arr2[] = {1,8,8,8,4,4,3};
vector<int> vec(arr2, arr2 + sizeof(arr2)/sizeof(arr2[0]));
vector<int>::iterator iterVec = search_n(vec.begin(), vec.end(), 3, 8);
if (iterVec != vec.end())
{
cout << "在vec中找到3个连续的元素8" << endl;
}
else
{
cout << "在vec中没有3个连续的元素8" << endl;
}
iterVec = search_n(vec.begin(), vec.end(), 3, 16, twice);
if (iterVec != vec.end())
{
cout << "在vec中找到3个连续元素的两倍为16" << endl;
}
else
{
cout << "在vec中没有3个连续元素的两倍为16" << endl;
}
return 0;
}