|
template <class ForwardIterator, class T>
ForwardIterator find_linear(ForwardIterator first, ForwardIterator last, T& value)
{
while (first != last)
if (*first++ == value)
return first;
return last;
}
函数find_linear()在一个容器中循环,如果找到指定的值,则返回该值的迭代器位置;否则返回past-the-end迭代器。下面用这个函数:
vector<int> v(3, 1);
v.push_back(7); // vector v: 1 1 1 7
vector<int>::iterator i = find_linear(v.begin(), v.end(), 7);
if (i != v.end())
cout << *i;
else
cout << “NOT FOUND”;
输出结果:7
4.2.3双向迭代器
在向前迭代器的基础上,双向迭代器(Bidirectional Iterator)还满足以下需求:
·pre/post decrement operator
即双向迭代器不仅允许++,而且允许--。它允许一个算法走过(pass through)容器中的元素时,即可想前走,也可向后走。
我们看一个使用双向迭代器的多遍走过(multi-pass)算法 --- 气泡排序(Bubble Sort):(责任编辑:admin) |
