<基于 C++ Primer P99>
相较于标准容器迭代器,vector 和 string 迭代器支持了更多额外的运算符。
iter + n;
iter - n;
iter1 += n;
iter1 -= n;
iter1 - iter2; // 返回类型是 difference_type 的带符号整型数
>, >=, <, <=;
利用迭代器运算实现二分搜索
// text 必须是有序的
// beg 和 end 表示我们搜索的范围
auto beg = text.begin(), end = text.end();
auto mid = text.begin() + (end - beg)/2;
while (mid != end && *mid != sought)
{
if (sought < *mid)
end = mid;
else
end = mid + 1;
mid = beg + (end - beg)/2;
}
// 当程序终止使,mid 或者等于 end 或者指向要找的元素