关于set和map迭代器支持的运算
2015-11-01 23:16
190 查看
之前写搜狗在线测试题目的时候,曾经想遍历一个set遍历。当时是这样写的。
后来发现程序报错。究其原因是,set迭代器不支持加减数操作。
查看了一下维基百科,下面是有关说明。
1.所有迭代器都应该实现自增算符:iter++,++iter
2.Bidirectional迭代器:是在前向迭代器的基础上,多了单步向后遍历的能力。也就是--iter,iter--。
3.Random Access迭代器:在双向迭代器基础上,具有直接访问各数据元素的能力。随机迭代器增加了“迭代器算术运算”:
iter+=i 迭代器递增i位
iter-=i 迭代器递减i位
iter+i 加i位后的迭代器
iter-i 减i位后的迭代器
iter[i] 加i位后的迭代器的解引用
iter<iter1 如果迭代器iter的位置在iter1前,返回true,否则返回false
iter<=iter1 如果iter的位置在iter1的前面或同一位置时返回true,否则返回false
iter>iter1 如果迭代器iter的位置在iter1后,返回true,否则返回false
iter>=iter1 如果iter的位置在iter1的后面或同一位置时返回true,否则返回false
4.在STL定义的容器中,string,vector与deque提供了随机访问迭代器,list、set、multiset、map、multimap提供了双向迭代器。
set<int>::iterator b = a.begin()+1
后来发现程序报错。究其原因是,set迭代器不支持加减数操作。
查看了一下维基百科,下面是有关说明。
1.所有迭代器都应该实现自增算符:iter++,++iter
2.Bidirectional迭代器:是在前向迭代器的基础上,多了单步向后遍历的能力。也就是--iter,iter--。
3.Random Access迭代器:在双向迭代器基础上,具有直接访问各数据元素的能力。随机迭代器增加了“迭代器算术运算”:
iter+=i 迭代器递增i位
iter-=i 迭代器递减i位
iter+i 加i位后的迭代器
iter-i 减i位后的迭代器
iter[i] 加i位后的迭代器的解引用
iter<iter1 如果迭代器iter的位置在iter1前,返回true,否则返回false
iter<=iter1 如果iter的位置在iter1的前面或同一位置时返回true,否则返回false
iter>iter1 如果迭代器iter的位置在iter1后,返回true,否则返回false
iter>=iter1 如果iter的位置在iter1的后面或同一位置时返回true,否则返回false
4.在STL定义的容器中,string,vector与deque提供了随机访问迭代器,list、set、multiset、map、multimap提供了双向迭代器。
相关文章推荐
- 析构函数何时调用
- 转换流InputStreamReader、OutputStreamWriter
- AngularJs angular.injector、angular.module
- 折半查找
- AlertDialog自定义样式问题
- linux ls和 ll 命令
- 上传apple store 注意的问题
- Java数据结构面试题
- 关于正则一些探究
- 使用Enterprise Architect画用例图,及各关联关系详解
- 计算机内存寻址
- 排序算法之二路归并排序
- iOS 多线程详解
- 在tomcat上发布一个javaweb项目
- hdu 4622 Reincarnation(SAM)
- android的TextView的TextWatcher使用
- 内存管理笔记(分页,分段,逻辑地址,物理地址与地址转换方式)
- 《探索需求》读书笔记三
- 配置spring的事务管理
- 冲刺汇总贴