网站客服:zx81024163 |

C++ STL标准库:算法<algorithm> 查找算法 find() find_if()

2024-10-20 17:06:35发布    浏览243次    信息编号:190163

友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。

C++ STL标准库:算法<algorithm> 查找算法 find() find_if()

文章目录

标准::查找

函数原型:

template <class InputIterator, class T>
   InputIterator find (InputIterator first, InputIterator last, const T& val);

查找范围内的值

返回一个迭代器,指向范围 [first, last) 中比较等于 val 的第一个元素。如果没有找到这样的元素,该函数将返回最后一个。

该函数使用运算符 == 将各个元素与 val 进行比较。

范围:

第一个,最后一个:

将迭代器输入序列的初始位置和最终位置。搜索范围为[first,last],包括first和last之间的所有元素,包括first指向的元素,不包括last指向的元素。

值:

要在范围内搜索的值。

T 应该是支持使用运算符 == 与元素进行比较的类型( 是左侧操作数,val 是右侧操作数)。

返回值:

比较等于 val 范围内第一个元素的迭代器。

如果没有元素匹配,则该函数返回最后一个。

标准::

函数原型:

template <class InputIterator, class UnaryPredicate>
   InputIterator find_if (InputIterator first, InputIterator last, UnaryPredicate pred);

查找范围内的元素

返回一个迭代器,指向范围 [first, last] 中 pred 返回 true 的第一个元素。如果没有找到这样的元素,该函数将返回最后一个。

范围:

第一个,最后一个

将迭代器输入序列的初始位置和最终位置。使用的范围是[first,last],包括first和last之间的所有元素,包括first指向的元素,但不包括last指向的元素。

预测

一个一元函数,接受范围内的元素作为参数并返回可转换为 bool 的值。返回的值指示该元素是否被视为在此函数的上下文中匹配。

函数不应修改其参数。

它可以是函数指针或函数对象。

返回值:

pred 不会将迭代器返回到范围中第一个为 false 的元素。

如果所有元素的 pred 都为 false,则该函数返回最后一个。

#include 
#include 
#include 
#include 
using namespace std;
template <class T>
void FillValue(T& vect, int first, int last)
{
	if (last >= first)
	{
		for (int i = first; i <= last; ++i)
			vect.insert(vect.end(), i);
	}
	else
	{
		cout << " The indexes is error: last < first. " << endl;
	}
}
void print(int elem)
{
	cout << elem << " ";
}
void main()
{
	vector <int> myvector;
	FillValue(myvector, -3, 12);
	for_each(myvector.begin(), myvector.end(), print);
	cout << endl;
	vector <int>::iterator pos1;
	pos1 = find(myvector.begin(), myvector.end(), 5);
	vector<int>::iterator pos2;
	pos2 = find_if(myvector.begin(), myvector.end(), bind2nd(greater<int>(), 3));
	
	cout << "第一个等于5的元素位置 :" << distance(myvector.begin(), pos1) + 1 << endl;
	cout << "第一个大于3的元素位置 :" << distance(myvector.begin(), pos2) + 1 << endl;
}

提醒:请联系我时一定说明是从星空网上看到的!