STL lower_bound upper_bound equal_range

STL lower_bound upper_bound equal_range
lower_bound  upper_bound:
原型:template<class ForwardIterator, class T>
   inline ForwardIterator lower_bound(
      ForwardIterator First,
      ForwardIterator Last,
      const T& Value
   )
lower_bound返回[First,last)中,可以插入value的第一个位置,使得插入后仍旧满足按照operator<排序的顺序
 upper_bound返回[First,last)中,比value大的第一个元素的位置
当[First,last)中没有value这个数时,lower_bound和upper_bound返回的位置是同一个位置
注意这两个函数返回的都是迭代器

equal_range返回一对迭代器:第一个迭代器等于lower_bound返回的迭代器,第二个迭代器等于upper_bound返回的迭代器。
举例:
vector < Widget >  vw;

sort(vw.begin(),vw.end());
typedef vector
< Widget > ::iterator VWiter;
typedef pair
< VWIter,VWIter > VWIterPair;
VWIterPair p
= equal_range(vw.begin(),vw.end(),w);
if (p.first != p.second)
{
     
}
cout<<"There are "<<distance(p.first,p.second)<<"elements in vw equal to w"<<endl;



你可能感兴趣的:(STL lower_bound upper_bound equal_range)