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;