iterator的使用和封个问题
这篇文章的内容还是不错的:
http://www.cnblogs.com/zhuyf87/archive/2012/12/08/2808290.html
for (vector<int>::iterator i = v.begin(); i < v.end(); i++) {
  cout << *i << endl;
}
这个循环本身没有明显错误,存在的只是一些风格上的问题。
(1)尽量做到const正确性。如果迭代器没有用来修改vector中的元素,应该改用const_iterator。
(2)尽量使用“!=”而不是“<”来比较两个迭代器。因为“<”只对随机访问迭代器有效(例如,std::list的迭代器并不支持“<”),而“!=”对于任何迭代器都有效。所以应该把使用“!=”比较迭代器作为日常惯例。
(3)尽量使用前缀“--i”和“++i”。除非真的需要用到i原来的值。
(4)避免无谓的重复求值。本例中v.end()的返回值在整个循环中不会改变,因此应当在循环之前预先将v.end()求出来。
(5)尽量使用“\n”而不是“endl”。使用endl会迫使输出流刷新其内部缓冲区,可以在整个循环结束之后写一行刷新语句。
(6)尽量使用标准库中的copy()和for_each()来代替手写循环,这样可以使代码变得更干净简洁。
copy(v.begin(), v.end(), ostream_iterator<int>(cout, “\n”);
此外,使用copy(),前面关于!=、++、end()和endl的问题也就不用操心了。
iterator的使用和封个问题的更多相关文章
- 设计模式(十):从电影院中认识"迭代器模式"(Iterator Pattern)
		上篇博客我们从醋溜土豆丝与清炒苦瓜中认识了“模板方法模式”,那么在今天这篇博客中我们要从电影院中来认识"迭代器模式"(Iterator Pattern).“迭代器模式”顾名思义就是 ... 
- 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。
		最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ... 
- [LeetCode] Flatten Nested List Iterator 压平嵌套链表迭代器
		Given a nested list of integers, implement an iterator to flatten it. Each element is either an inte ... 
- [LeetCode] Peeking Iterator 顶端迭代器
		Given an Iterator class interface with methods: next() and hasNext(), design and implement a Peeking ... 
- [LeetCode] Zigzag Iterator 之字形迭代器
		Given two 1d vectors, implement an iterator to return their elements alternately. For example, given ... 
- [LeetCode] Binary Search Tree Iterator 二叉搜索树迭代器
		Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the ro ... 
- 用vue.js学习es6(六):Iterator和for...of循环
		一.Iterator (遍历器)的概念: 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只 要部署Iterator接口,就可以完成遍历操 ... 
- [转]使用Enumeration和Iterator遍历集合类
		原文地址:http://www.cnblogs.com/xwdreamer/archive/2012/05/30/2526268.html 前言 在数据库连接池分析的代码实例中,看到其中使用Enume ... 
- 14 Iterator和for...of循环
		Iterator和for...of循环 首先 Iterator 是一个接口. 标准是 function makeIterator(array) { var nextIndex = 0; return ... 
随机推荐
- CSS透明度设置支持IE,Chrome,Firefox浏览器
			CSS文件里设置例如以下就可以 filter:alpha(opacity=60); //支持IE opacity:0.6; //支持Chrome.Firefox 
- zzulioj--1841--so easy!麻麻再也不用担心我的数学了!(数学水题)
			1841: so easy!麻麻再也不用担心我的数学了! Time Limit: 1 Sec Memory Limit: 128 MB Submit: 27 Solved: 15 SubmitSt ... 
- POJ 3670 DP  LIS?
			权值为1~3 好了 此题是水题-- i表示到了第i个数,j表示结尾的数是j f[i][j]=min(f[i][j],f[i-1][k]+(a[i]!=j)) 1<=k<=j 最长上升的. ... 
- POJ 3122 Pie 二分答案
			题意:给你n个派,每个派都是高为一的圆柱体,把它等分成f份,每份的最大体积是多少. 思路: 明显的二分答案题-- 注意π的取值- 3.14159265359 这样才能AC,,, //By Sirius ... 
- Maven项目:Plugin execution not covered by lifecycle configuration 解决方案
			这个是eclipse中配置文件pom.xml报的错.具体错误信息: Plugin execution not covered by lifecycle configuration: org.apach ... 
- js一些常用方法
			string 增加 IsNullorEmpty : String.prototype.IsNullOrEmpty = function (r) { if (r === undefined || ... 
- Centos安装masscan
			1.yum install git gcc make libpcap-devel2.git clone https://github.com/robertdavidgraham/masscan3.cd ... 
- 【SRM 716 DIV 1 A】 ConstructLCS
			Problem Statement A string S is a subsequence of a string T if we can obtain S from T by erasing som ... 
- ArcGIS api for javascript——动态创建图层列表
			描述 本例循环地图服务里的所有图层并增加每个图层到一个带checkbox的列表,checkbox能设置图层的显示或隐藏.动态创建列表的优势是所有的图层都会包含在列表中,即使服务器管理员删除或增加了图层 ... 
- OpenCV图像处理篇之腐蚀与膨胀
			转载请注明出处:http://xiahouzuoxin.github.io/notes 腐蚀与膨胀 腐蚀和膨胀是图像的形态学处理中最主要的操作,之后遇见的开操作和闭操作都是腐蚀和膨胀操作的结合运算. ... 
