STL算法(1) C++ 查找算法

本文详细介绍了C++ STL中各种查找算法的功能与用法,包括adjacent_find、count、binary_search等,并通过实例展示了如何使用这些算法进行高效查找。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

A.必须包括的头文件

STL中的算法函数:#include<algorithm>

STL中的数值函数:#include<numeric>,#include<functional>


1,.查找算法

   (1),adjacent_find:  在iterator对标识元素范围内,查找一对相邻重复元素,找到则返回指向这对元素的第一个元素的ForwardIterator。否则返回last。重载版本使用输入的二元操作符代替相等的判断


    (2)count:利用等于操作符,把标志范围内的元素与输入值比较,返回相等元素个数。

      例子:cout<<count(ivec.begin() , ivec.end() , searchValue)


   (3)binary_search: 在有序序列中查找value,找到返回true。重载的版本实用指定的比较函数对象或函数指针来判断相等。


   (4count_if,利用输入的操作符,对标志范围内的元素进行操作,返回结果为true的个数。

 vector<int> vec;
bool owner_order(int value)
{
return value >= 3;
}
int main()
{
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
vec.push_back(3);
vec.push_back(4);
vector<int>::iterator it_i;
cout<<count_if(vec.begin(),vec.end(),owner_order)<<endl;//计算出现次数
//owner_order 是自定义函数
}


   (5)equal_range: 功能类似equal,返回一对iterator,第一个表示lower_bound,第二个表示upper_bound。

   
    (6)find:利用底层元素的等于操作符,对指定范围内的元素与输入值进行比较。当匹配时,结束搜索,返回该元素的一个InputIterator。


   (7) find_end: 在指定范围内查找"由输入的另外一对iterator标志的第二个序列"的最后一次出现。找到则返回最后一对的第一个ForwardIterator,否则返回输入的"另外一对"的第一个ForwardIterator。重载版本使用用户输入的操作符代替等于操作。


   (8)find_first_of:在指定范围内查找"由输入的另外一对iterator标志的第二个序列"中任意一个元素的第一次出现。重载版本中使用了用户自定义操作符。


   (9) find_if: 使用输入的函数代替等于操作符执行find。


   (10) lower_bound: 返回一个ForwardIterator,指向在有序序列范围内的可以插入指定值而不破坏容器顺序的第一个位置。重载函数使用自定义比较操作。


    (11)upper_bound:返回一个ForwardIterator,指向在有序序列范围内插入value而不破坏容器顺序的最后一个位置,该位置标志一个大于value的值。重载函数使用自定义比较操作。


    (12)search: 给出两个范围,返回一个ForwardIterator,查找成功指向第一个范围内第一次出现子序列(第二个范围)的位置,查找失败指向last1。重载版本使用自定义的比较操作。


     (13)search_n:在指定范围内查找val出现n次的子序列。重载版本使用自定义的比较操作。

  





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

K_n_i_g_h_t_1990

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值