首先讲一下vector::end()
returns an iterator referring to the past-the-end element in the vector container.
The past-the-end element is the theoretical element that would follow the last element in the vector. It does not point to any element, and thus shall not be dereferenced.
可以看到它跟在vector最后一个元素后面,不指向任何元素。也就是说vector的范围是[vector::begin(),vector::end())。
1.upper_bound
#include <algorithm>
template< class ForwardIt, class T >
ForwardIt upper_bound( ForwardIt first, ForwardIt last, const T& value );
在[first,last)范围内进行查找,返回大于value的第一个元素的迭代器。若找不到这种元素则为 last
。举例
vector<int>::iterator it=find(vec.begin(),vec.end(),7);
int idx=-1;
if(it!=vec.end()){
idx=it-vec.begin();
}
查找第一个大于6的元素的下标。
另外一种声明
template< class