当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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

复杂度

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

数据竞争

访问范围的部分或全部元素。

异常

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






相关用法


注:本文由纯净天空筛选整理自 C++ Algorithm Function adjacent_find()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。