STL组件之迭代器(1)(4)
输入迭代器
输入迭代器是最普通的类型。输入迭代器至少能够使用==和!=测试是否相等;使用*来访问数据;使用++操作来递推迭代器到下一个元素或到达past-the-end 值。
为了理解迭代器和STL函数是如何使用它们的,现在来看一下find()模板函数的定义:
- template <class InputIterator, class T>
- InputIterator find(
- InputIterator first, InputIterator last, const T& value) {
- while (first != last && *first != value) ++first;
- return first;
- }
注意
在find()算法中,注意如果first和last指向不同的容器,该算法可能陷入死循环。
输出迭代器
输出迭代器缺省只写,通常用于将数据从一个位置拷贝到另一个位置。由于输出迭代器无法读取对象,因此你不会在任何搜索和其他算法中使用它。要想读取一个拷贝的值,必须使用另一个输入迭代器(或它的继承迭代器)。
Listing 3. outiter.cpp
- #include <iostream.h>
- #include <algorithm> // Need copy()
- #include <vector> // Need vector
- using namespace std;
- double darray[10] =
- {1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9};
- vector<double> vdouble(10);
- int main()
- {
- vector<double>::iterator utputIterator = vdouble.begin();
- copy(darray, darray + 10, outputIterator);
- while (outputIterator != vdouble.end()) {
- cout << *outputIterator << endl;
- outputIterator++;
- }
- return 0;
- }
注意
当使用copy()算法的时候,你必须确保目标容器有足够大的空间,或者容器本身是自动扩展的。
- 上一篇:详细介绍C/C++时间函数使用方法(1)
- 下一篇:STL组件之算法(1)