首页 > 编程知识 正文

static静态代码块什么时候执行,五种迭代器

时间:2023-05-05 12:28:13 阅读:148807 作者:2464

STL的迭代器的作用是什么? 既然有指针,为什么还要迭代器

参考回答:

1、迭代器

迭代器模式(也称为Cursor模式)提供了一种按顺序访问聚合对象中各个元素的方法,而不暴露对象的内部表示。 或者,迭代器模式是一种应用于聚合对象的模式,通过应用该模式,可以按一定的顺序(迭代器提供的方式)访问聚合对象中的每个元素,而无需知道对象的内部表示

由于迭代器模式的以上特性,与聚合对象的结合在一定程度上限制了其广泛运用,一般来说,STL的list、vector、stack等容器类和ostream_Iterator等扩展迭代器

2、迭代器和指针的区别

迭代器不是指针,而是类模板,表现为指针。 他只是模拟了指针的一些功能,重载了指针的一些操作符,- -、*、- -等等。 迭代器是封装指针并可以遍历“标准平台库”(STL )容器中的所有或部分元素”的对象,本质是封装本机指针并改进指针概念(lindardtemplatelibrary )

迭代器返回对象引用而不是对象值,因此cout只能输出迭代器使用*取值的值,而不能直接输出其本身。

3、迭代器产生原因

迭代器类的访问方式是抽象不同集合类的访问逻辑,在不暴露集合内部结构的情况下,达到循环遍历集合的效果。

4.为什么有了指针还要迭代器

1 .通过迭代器访问容器,可以避免很多错误,同时也可以隐藏容器的具体实现。

2、迭代器确保所有容器的基本迭代模式相同。 如果在实现算法中需要迭代器,则使用迭代器可以实现数据结构和算法的分离,而不需要关注容器的具体类型。

3、迭代器本身有很多优点,可以弥补c语言的不足。 例如,iterator_category可以获得迭代器指向的类别,并根据每个类别的特性提供不同的算法。

迭代器是一个抽象的设计概念,设计模式一书定义了一种方法,用于按顺序访问某个聚合物(容器)中的每个元素,而无需暴露该聚合物的内部实现细节。 这意味着迭代器可以访问容器内部的实现,而无需管理其在容器中的实现方式。

在STL中,集装箱和算法分开实现,集装箱负责数据的存储。 算法表示用系统的方法描述解决问题的战略机制。 也就是说,在输入-处理-输出的流程中,必须能够读取或修改处理中输入的数据等。 如果算法的输入是特定容器,则该算法可能需要知道容器可以提供对其的访问函数。 但是,每个容器的访问函数不一定相同。 在这种情况下,如果每个容器都需要特定版本的算法,则会导致大量代码冗馀。 那么怎么办?

可以在容器和算法之间使用迭代器进行总结。 算法通过迭代器访问容器,而不考虑容器中的具体实现。 通过设计抽象迭代器的接口,定义统一的实现方法。 由于每个容器具有不同的内部存储模式,因此继承和实现抽象迭代器接口的专用迭代器必须完成对每个容器类别的数据访问。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。