标签:
所有的容器都定义了自己的迭代器类型,所以一般情况下,不需要再自己添加迭代器头文件。但是如果要使用一些特殊的迭代器,如反向迭代器,或者一些迭代器辅助函数,那么就需要添加头文件<iterator>。
类型 | 能力 | 提供者 |
---|---|---|
输入迭代器 | 一次向前读取 | istream |
输出迭代器 | 向前写入 | ostream,inserter |
前向迭代器 | 向前读取和写入 | forward list,unordered containers |
双向迭代器 | 向前和向后的读取和写入 | list,set,multiset,map,multimap |
随机存取迭代器 | 随机读取和写入 | array,vector,deque,string,C-style array |
迭代器运算中,++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() //返回指向容器尾元素的迭代器
标签:
原文地址:http://blog.csdn.net/sin_geek/article/details/51333629