C++ 算法 adjacent_find()函数

C++ 算法 adjacent_find()函数

C++算法函数adjacent_find()在范围[first, last]上执行搜索操作,查找连续匹配元素的第一个出现。如果找到这样的元素,则返回指向这两个元素中第一个元素的迭代器。否则,返回最后一个元素。

语法

template<class ForwardIterator>
ForwardIterator adjacent_find(ForwardIterator first, ForwardIterator last);

template<class ForwardIterator, class BinaryPredicate>
ForwardIterator adjacent_find(ForwardIterator first,ForwardIterator last BinaryPredicate pred);

参数

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

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

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

返回值

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

示例1

#include<iostream>
#include<algorithm>
#include<vector>
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<int> newvector(newints, newints+8);
    std::vector<int>::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<iostream>
#include<algorithm>
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

复杂性

函数的复杂性在首尾元素之间的距离上是线性的。

数据竞争

对范围中的部分或所有元素进行访问。

异常

如果任何参数抛出异常,该函数将抛出异常。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程