C++ STL标准库:算法<algorithm> 查找算法 find() find_if()
2024-10-20 17:06:35发布 浏览244次 信息编号: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;
}
提醒:请联系我时一定说明是从星空网上看到的!