STL 定义了迭代器模板,用来帮助我们在自己的迭代器类中包含要求的类型别名。 iterator 是一个结构体模板,它定义了 5 个来自于 iterator_traits 模板的类型别名:
这个模板定义了 STL 对迭代器所要求的全部类型。例如,如果有一个未知类型的模板参数 Iter,当需要声明一个指针时,它指向一个迭代器解引用时提供的类型,这时可以写作 Iter::pointer。 iterator_category 的值必定是在前面章节介绍的类别标签类中的一个。
当定义一个表示迭代器的类时,可以使用以迭代器模板为基类生成的实例,这样会添加类需要的类型别名。例如:
还需要注意,需要为迭代器定义 STL 要求的全部类型。模板的第 1 个参数指定了作为完全随机访问迭代器的迭代器类型。第 2 个参数是迭代器所指向对象的类型。最后的 3 个参数是默认值,因此第 3 个参数和这两个迭代器的类型不同,是 ptrdiff_t。第 4 个参数是一个指向对象的指针类型,因此是 int*。最后一个模板参数指定了引用的类型,是 int&。当然,迭代器类型不做任何事,仍然需要定义类的全部成员。
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!