Numeric_Range<T> 模板的定义:


以一
以一 2023-12-31 03:36:50 51205 赞同 0 反对 0
分类: 资源
template class Numeric_Iterator; // Template type declaration // Defines a numeric range template class Numeric_Range {

Numeric_Range<T> 模板的定义:

 
  1. template <typename T> class Numeric_Iterator; // Template type declaration
  2. // Defines a numeric range
  3. template<typename T>
  4. class Numeric_Range
  5. {
  6. static_assert(std::is_integral<T>::value || std::is_floating_point<T>::value,
  7. "Numeric_Range type argument must be numeric.");
  8. friend class Numeric_Iterator < T >;
  9. protected:
  10. T start; // First value in the range
  11. T step; // Increment between successive values
  12. size_t count; // Number of values in the range
  13. public:
  14. Numeric_Range(T first=0, T incr=1, size_t n=2) : start {first}, step {incr}, count {n}{}
  15. // Return the begin iterator for the range
  16. Numeric_Iterator<T> begin(){ return Numeric_Iterator<T>(*this); }
  17. // Return the end iterator for the range
  18. Numeric_Iterator<T> end()
  19. {
  20. Numeric_Iterator<T> end_iter(*this);
  21. end_iter.value = start + count*step; // End iterator value is one step over the last
  22. return end_iter;
  23. }
  24. };

类型参数 T 是序列的值类型,因此它必定是数值类型。对于模板主体中的函数 static_assert(),当 T 不是整型也不是浮点型时,它的第一个参数会为 false,这时会生成一条包含第二个字符串参数的编译时错误消息。这里使用的断言模板定义在头文件 type_traits 中,模板中还有一些其他的编译时模板类型参数检查断言。这个构造函数的三个参数都有默认值,因此它也可以作为无参构造函数。这三个参数分别用来初始化值、指定一个值到另一个值的增量,以及指定值的个数。因此默认定义了又有两个值的元素段:0 和 1。编译器会在需要时,提供适当的拷贝构造函数。

另有两个成员函数生成,然后返回元素段的开始和结束迭代器。结束迭代器的成员变量 value 的值为最后一个 value+1。结束迭代器是通过修改开始迭代器的 value 生成的。Numeric_Itemtor<T>模板类型的声明在其定义之前是必要的,因为还没有定义迭代器类型模板。Numeric_Iterator<T> 模板被指定为这个模板的友元类,这样 Numeric_Iterator<T> 的实例就可以访问Numeric_Range<T> 的私有成员。Numeric_Range<T> 模板也需要成为 Numeric_Iterator<T> 的友元类,因为 Numeric_Range<T> 的成员函数 end() 需要访问 Numeric_Iterator<T> 的一个私有成员。

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
以一L0
粉丝 0 资源 1143 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  123
统信桌面专业版【全盘安装UOS系统】介绍  116
银河麒麟桌面操作系统安装佳能打印机驱动方法  108
银河麒麟桌面操作系统 V10-SP1用户密码修改  101
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益217.85元

3

1843880570 收益214.2元

4

IT-feng 收益208.98元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!