迭代器基础

迭代器(iterator)是什么?我不确定。无法使用定义方式给出答案。

基本介绍(来源于网络):迭代器是一种抽象的概念。能够遍历容器内的 部分/全部 元素。每个迭代器中包含着元素的地址。  它可以将 抽象容器 和 泛型算法 结合起来。

大致原理:

  1)迭代器对象 包含 容器内元素的地址。

  2)通过设计,将元素操作统一。

几个不确定问题:

  1)迭代器是否保存元素真实的内存地址?

  2)抽象是在设计层的概念?还是在实际代码中也进行操作抽象化?

  3)泛型算法是否可以不使用迭代器?

  4)判断两个迭代器 ’!=‘ / ‘==‘ 时,比较的是内存地址,还是迭代器的某个成员变量?

个人理解:

  1)迭代器的概念,有效整合不同容器和泛型算法。它提供了一个接口,用来操作容器内元素。

  2)通俗理解:他是STL库的信息接口。

  3)它要求所有操作应该有相同接口。

  4)容器需要提供自己的迭代器,使用泛型算法尽量使用迭代器。

一些细节:

  1)改变容器内元素的储存地址的操作,可能导致原有迭代器失效。例如:删除,重分配内存。

  2)尾后迭代器通常表示结束。

  3)迭代器不能使用 取地址符号’&‘ 来获取。

对迭代器设计的胡思乱想:迭代器是C+标准库的一个整体设计概念。它提供了标准库对 元素内部 的操作。如此,可以在设计层对未知的一切进行统一的设计和整理。但,无法确定的是,在设计时,是否考虑到指针的使用存在太多不安全性,所以,使用迭代器来代替。作为一种保护措施?

时间: 2024-08-29 23:23:51

迭代器基础的相关文章

C++学习基础——迭代器基础

迭代器分为两种:一种是iterator,另一种是const_iterator.两者都可进行访问容器中的元素,不同之处是:(1)const_iterator类型只能用于读取容器内的元素,不能更改其值:而iterator可以更改其值.(2)对const_iterator类型进行解引用时,返回值是一个const值,不允许对其解引用赋值.另外不要把const_iterator对象与const的iterator对象混淆,其不同之处是:(1)声明const迭代器时必须初始化,一经初始化后就不能改变它的值,但

C++ 基础知识回顾(string基础、智能指针、迭代器、容器类)

[1] string基础 [1.1] string 的构造 1 #include <iostream> 2 #include <string> 3 4 int main() 5 { 6 using namespace std; 7 8 cout << "1 --- string(const char* s):将string对象初始化为s指向的C风格字符串" << endl; 9 string one("benxintuzi_1&

STL学习笔记(迭代器类型)

迭代器类型 迭代器是一种“能够遍历某个序列内的所有元素”的对象.它可以透过与一般指针一致的接口来完成自己的工作. 不同的迭代器具有不同的”能力“(行进和存取能力) Input迭代器 Input迭代器只能一次一个向前读取元素,按此顺序一个个传回元素值. 几乎所有迭代器都具备Input迭代器的能力,而且通常更强.纯粹Input迭代器的一个典型例子就是“从标准输入装置读取数据”的迭代器. 下表列出了Input迭代器的各种操作行为 Output迭代器 Output迭代器和Input迭代器相反,其作用是将

小白学 Python(21):生成器基础

人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变量基础操作 小白学 Python(5):基础运算符(上) 小白学 Python(6):基础运算符(下) 小白学 Python(7):基础流程控制(上) 小白学 Python(8):基础流程控制(下) 小白学 Python(9):基础数据结构(列表)(上) 小白学 Python(10):基础数据结构(

小白学 Python(23):Excel 基础操作(上)

人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变量基础操作 小白学 Python(5):基础运算符(上) 小白学 Python(6):基础运算符(下) 小白学 Python(7):基础流程控制(上) 小白学 Python(8):基础流程控制(下) 小白学 Python(9):基础数据结构(列表)(上) 小白学 Python(10):基础数据结构(

java 集合框架(十)List

一.概述 List是一种有序集合,有时也被称为序列,可以有重复的元素.List集合相比Collection,除了直接继承的方法外,有以下拓展的操作方法 位置访问---可以基于元素索引来操作元素,比如get,set,add,addAll和remove方法都支持这一点 搜索---在集合中搜索一个特定对象,并返回它的索引,如indexOf和lastIndexOf方法 迭代---除了继承自Collection中的迭代器,List还提供一个基于Iterator拓展的ListIterator迭代器 视图--

JDK容器与并发—Map—ConcurrentSkipListMap

概述 基于跳表实现的ConcurrentNavigableMap. 1)containsKey.get.put.remove等操作的平均时间复杂度为log(n):size非固定时间操作,因异步特性,需要遍历所有节点才能确定size,且可能不是正确的值如果遍历过程中有修改:批量操作:putAll.equals.toArray.containsValue.clear非原子性. 2)增删改查操作并发线程安全: 3)迭代器是弱一致性的:map创建时或之后某个时间点的,不抛出ConcurrentModif

Arraylist、Linkedlist遍历方式性能分析

本文主要介绍ArrayList和LinkedList这两种list的常用循环遍历方式,各种方式的性能分析.熟悉java的知道,常用的list的遍历方式有以下几种: 1.for-each List<String> testList = new ArrayList<String>(); for (String tmp : testList) { //use tmp; } 这种遍历方式是最常用的遍历方式,因为书写比较方便,而且不需要考虑数组越界的问题,Effective-Java中推荐使

完美C++(第5版)(双色)

完美C++(第5版)(双色) 薛正华 沈庚 韦远科 译 ISBN 978-7-121-23198-8 2014年6月出版 定价:148.00元 788页 16开 内容提要 <完美C++(第5版)>为读者提供了一个学习.理解和掌握 C++编程语言的全面视图,覆盖面广.实用性强.书中介绍了 C++的基本数据类型,如字符串.数组.指针.结构体.类等,同时也详细描述了面向对象编程语言的特性:封装.继承和多态,以及这些特性在 C++语言中的具体使用方式.本书的后面章节还重点介绍了模板.链式数据结构.标准