头文件 Numeric_Range.h 的完整内容如下:
- #include <algorithm>
- #include <numeric>
- #include <iostream>
- #include <vector>
- #include "Numeric_Range.h"
-
- int main()
- {
- Numeric_Range<double> range {1.5, 0.5, 5};
- auto first = range.begin();
- auto last = range.end();
- std::copy(first, last, std::ostream_iterator<double>(std::cout, " "));
- std::cout << "\nSum = " << std::accumulate(std::begin(range), std::end(range), 0.0) << std::endl;
-
- Numeric_Range<long> numbers {15L, 4L, 10};
- std::vector<long> data {std::begin(numbers), std::end(numbers)};
- std::cout << "\nValues in vector are:\n";
- std::copy(std::begin(data), std::end(data), std::ostream_iterator<long>(std::cout, " "));
- std::cout << std::endl;
-
- std::cout << "\nThe values in the numbers range are:\n";
- for (auto n : numbers)
- std::cout << n << " ";
- std::cout << std::endl;
- }
运行结果为:
1.5 2 2.5 3 3.5
Sum = 12.5
Values in vector are:
15 19 23 27 31 35 39 43 47 51
The values in the numbers range are:
15 19 23 27 31 35 39 43 47 51
生成的第一个 Numeric_Range 实例有 5 个 double 型元素,它们从 1.5 开始,每次增加 0.5。Numeric_Range 的迭代器用来在 copy() 算法中将值复制到 ostream_iterator。这表明算法可以接受这个迭代器。第二个 Numeric_Range 实例有 10 个 long 型元素。在 vector 容器的初始化列表中,使用开始和结束迭代器,然后用 copy() 算法输出 vector 中的元素。最后,为了演示它的工作原理,以 for 循环的方式输出它的值。输出表明 Numeric_Range 模板成功创建了整型和浮点型的元素段,我们成功定义了一个可以使用 STL 的迭代器类型。