C++ Primer笔记( 3.4.2)—— 迭代器运算器
#include
#include
#include
using std::string;
using std::vector;
int main()
{
//举个例子,下面的代码得到一个迭代器,它指向某vector对象中间位置的元素;
vector v = { 0,1,2,3,4,5,6,7,8,9 };
auto mid = v.begin() + v.size() / 2;
//v有10个元素,v.size()/2得5,此例中即令mid等于v.begin()+5。
//下面的程序使用迭代器完成了二分搜索
//text必须是有序
vector text = { 0,1,2,3,4,5,6,7,8,9 };
int sought = 7; //需要搜索的值
//beg和end表示我们搜索的范围
auto beg = text.begin(), end = text.end();
auto mid = text.begin() + (end - beg) / 2; //初始状态下的中间点
//当还有元素尚未检查并且我们还没有找到sought时执行循环
while (mid != end && *mid != sought)
{
if (sought < *mid) //我们要找到元素在前半部分吗?
end = mid; //如果是,调整搜索范围使得忽略掉后半部分
else //我们要找的元素在后半部分
beg = mid + 1; //在mid之后寻找
mid = beg + (end - beg) / 2; //新的中间点
}
return 0;
}