STL之非修改性序列算法2

最大值与最小值

函数原型:

Iterator min_element(Iterator begin ,Iterator end);
Iterator min_element(Iterator begin ,Iterator end ,compFunc op);

Iterator max_element(Iterator begin ,Iterator end);
Iterator max_element(Iterator begin ,Iterator end ,compFunc op);
说明一下compFunc参数。对于min_element(),当第一个元素小于第二个元素时,返回true。对于这个自定义的函数,只要满足

bool (*func)(T ,T)类型了,至于其中的规则,应该是任君为之吧。


搜寻元素

  • 在集合中查找指定的(符合要求的)元素。

函数原型:

Iterator find(Iterator begin ,Iterator end , const T & value);
Iterator find_if(Iterator begin ,Iterator end , UnaryPredicate op);
嘿嘿,这里又出现了一元判定词,记得可以是bool (*func)(T &) 形式的函数指针。也可以是bind2nd(指针,T),其实,后者是属于前者的。

  • 搜索前n个连续匹配的元素。

这两函数感觉很少会用到。

函数原型:

Iterator search_n(Iterator begin ,Iterator end ,Size count ,const T & value);
Iterator search_n(Iterator begin ,Iterator end ,Size count ,const T & value ,BinaryPredicate op);

如果要查找集合中4个连续大于3的元素,可以这样写:


vector<int>::iterator pos;
pos = search_n(myvec.begin() ,myvec.end() ,4 ,3 ,greater<int>());

  • 搜索第一个子区间
Iterator search(Iterator begin ,Iterator end ,Iterator2 begin ,Iterator2 end);
Iterator search(Iterator begin ,Iterator end ,Iterator2 begin ,Iterator2 end ,BinaryPredict op);

第一个函数在第一个集合中搜索出和子区间一样的区间。第二个函数在第一个集合中搜索出满足条件op()的第一个子区间。

  • 搜索最后一个区间
Iterator find_end(Iterator ,Iterator ,Iterator2 ,Iterator2);
Iterator find_end(Iterator ,Iterator ,Iterator2 ,Iterator2,BinaryPredicate);
  • 搜索某些元素第一次出现的位置。
Iterator find_first_of(Iterator begin,Iterator end,Iterator2 searchBegin ,Iterator2 searchEnd);
Iterator find_first_of(Iterator begin,Iterator end,Iterator2 searchBegin ,Iterator2 searchEnd,BinaryPredicate op);

感觉这个函数和search()差不多。

  • 搜索两个连续相等的元素
T adjacent_find(T first ,T last);
T adjacent_find(T first ,T last ,Pred pr);
其中,pr是一个二元判定词对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值