使用迭代器模板


以一
以一 2023-12-31 03:35:03 53179 赞同 0 反对 0
分类: 资源
STL 定义了迭代器模板,用来帮助我们在自己的迭代器类中包含要求的类型别名。 iterator 是一个结构体模板,它定义了 5 个来自于 iterator_traits 模板的类型别名:

使用迭代器模板

STL 定义了迭代器模板,用来帮助我们在自己的迭代器类中包含要求的类型别名。 iterator 是一个结构体模板,它定义了 5 个来自于 iterator_traits 模板的类型别名:

  1. template<class Category, class T, class Difference = ptrdiff_t, class Pointer =T*,class Reference = T&> struct iterator
  2. {
  3. typedef T value_type;
  4. typedef Difference difference_type;
  5. typedef Pointer pointer;
  6. typedef Reference reference;
  7. typedef Category iterator_category
  8. }

这个模板定义了 STL 对迭代器所要求的全部类型。例如,如果有一个未知类型的模板参数 Iter,当需要声明一个指针时,它指向一个迭代器解引用时提供的类型,这时可以写作 Iter::pointer。 iterator_category 的值必定是在前面章节介绍的类别标签类中的一个。

当定义一个表示迭代器的类时,可以使用以迭代器模板为基类生成的实例,这样会添加类需要的类型别名。例如:

  1. class My_Iterator : public std::iterator<std::random_access_iterator_tag,int>
  2. {
  3. // Members of the iterator class...
  4. }

还需要注意,需要为迭代器定义 STL 要求的全部类型。模板的第 1 个参数指定了作为完全随机访问迭代器的迭代器类型。第 2 个参数是迭代器所指向对象的类型。最后的 3 个参数是默认值,因此第 3 个参数和这两个迭代器的类型不同,是 ptrdiff_t。第 4 个参数是一个指向对象的指针类型,因此是 int*。最后一个模板参数指定了引用的类型,是 int&。当然,迭代器类型不做任何事,仍然需要定义类的全部成员。

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

评价 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元

请使用微信扫码

加入交流群

请使用微信扫一扫!