📜  C++ STL-algorithm.neighbor_find()函数

📅  最后修改于: 2020-10-16 07:50:25             🧑  作者: Mango

C++ STL-algoritm函数neighbor_find()

C++ STL-algoritm.neighbor_find()函数在两个连续匹配元素的最先出现的范围[first,last]上执行搜索操作。如果找到了这样的元素,则返回两个元素的第一个元素的迭代器。否则,返回最后一个元素。

句法

template
ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last);

template
ForwardIterator adjacent_find(ForwardIterator first,ForwardIterator last BinaryPredicate pred);

参数

first:它是范围中第一个元素的正向迭代器。

last:它是范围中最后一个元素的正向迭代器。

pred:它是一个二进制函数,接受两个元素作为参数并执行该函数设计的任务。

返回值

如果找到两个连续的匹配元素,则该函数将迭代器返回到range [first,last)的第一个元素,否则返回最后一个元素。

例子1

#include
#include
#include
using namespace std;
bool myfunc(int j, int k)
{
    return(j==k);
}


int main()
{
    int newints[]={5,20,5,50,50,20,60,60,20};
    std::vector newvector(newints, newints+8);
    std::vector::iterator ti;
    ti=std::adjacent_find(newvector.begin(),newvector.end());
    if(ti!=newvector.end())
    std::cout<<"In the given range the first pair of sequence that is repeated is:"<<*ti<<"\n";
    ti=std::adjacent_find(++ti,newvector.end(),myfunc);
    if(ti!=newvector.end())
    std::cout<<"In the given range the second pair of sequence     that is repeated is:"<<*ti<<"\n";
    return 0;
}

输出:

In the given range the first pair of sequence that is repeated are: 50
In the given range the second pair of sequence that is repeated are: 60

例子2

#include
#include
int main()
{
    int A[]={12,14,17,17,19};
    int n=sizeof(A)/sizeof(A[0]);
    int* ti=std::adjacent_find(A,A+n);
    std::cout<<*ti;
}

输出:

17

复杂度

函数的复杂度是线性的,直到第一个元素与最后一个元素之间的距离为止。

数据竞争

访问范围的某些或全部元素。

例外情况

如果任何参数抛出一个异常,该函数将引发异常。