STL学习笔记— —iterator迭代器

头文件

所有的容器都定义了自己的迭代器类型,所以一般情况下,不需要再自己添加迭代器头文件。但是如果要使用一些特殊的迭代器,如反向迭代器,或者一些迭代器辅助函数,那么就需要添加头文件<iterator>。

迭代器类型

类型 能力 提供者
输入迭代器 一次向前读取 istream
输出迭代器 向前写入 ostream,inserter
前向迭代器 向前读取和写入 forward list,unordered containers
双向迭代器 向前和向后的读取和写入 list,set,multiset,map,multimap
随机存取迭代器 随机读取和写入 array,vector,deque,string,C-style array

STL学习笔记— —iterator迭代器_第1张图片

迭代器运算中,++iter比iter++更快,所以最好选用++iter

输入迭代器

*iter //读取实际元素

iter ->member //读取实际元素的成员

++iter //向前步进(返回新位置)

iter++ //向前步进(返回旧位置)

iter1 == iter2 //判断两个迭代器是否相等

iter1 != iter2 //判断两个迭代器是否不等

TYPE(iter) //copy构造函数

输出迭代器

*iter = value  //将数值写到迭代器所指位置

++iter //向前步进(返回新位置)

iter++ //向前步进(返回旧位置)

TYPE(iter) //copy构造函数

前向迭代器

*iter //存取实际元素

iter ->member //存取实际元素的成员

++iter //向前步进(返回新位置)

iter++ //向前步进(返回旧位置)

iter1 == iter2 //判断两个迭代器是否相等

iter1 != iter2 //判断两个迭代器是否不等

TYPE() //default构造函数

TYPE(iter) //copy构造函数

iter = iter2 //赋值

双向迭代器

*iter //存取实际元素

iter ->member //存取实际元素的成员

++iter //向前步进(返回新位置)

iter++ //向前步进(返回旧位置)

--iter //向后步进(返回新位置)

iter-- //向后步进(返回旧位置)

iter1 == iter2 //判断两个迭代器是否相等

iter1 != iter2 //判断两个迭代器是否不等

TYPE() //default构造函数

TYPE(iter) //copy构造函数

iter = iter2 //赋值

随机存取迭代器

iter[n] //存取索引位置为n的元素
iter+=n //向前跳n个元素(若n为负,则向后跳)
iter-=n //向后跳n个元素(若n为负,则向前跳)
iter+n //传回iter之后的第n个元素
n+iter //传回iter之后的第n个元素
iter-n //传回iter之前的第n个元素
iter1-iter2 //传回iter1和iter2之间的距离
iter1<iter2 //判断iter1是否在iter2之前
iter1>iter2 //判断iter1是否在iter2之后
iter1<=iter2 //判断iter1是否不在iter2之后
iter1>=iter2 //判断iter1是否不在iter2之前

迭代器辅助函数

advance() //使迭代器前进给定的距离 

distance() //返回两个迭代器之间的距离 

next() //使迭代器前进一步 

prev() //使迭代器后退一步 

begin() //返回指向容器首元素的迭代器

end() //返回指向容器尾元素的迭代器

你可能感兴趣的:(C++,STL)