当前位置: 首页 > news >正文

iterator迭代循环的风格问题

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的问题也就不用操心了。

相关文章:

  • [objective-c]关于KVC--KVO--KVB
  • NSStringOC字符串
  • linux 升级kernel
  • 构建私有云和公有云的免费开源软件项目OpenStack
  • KNN算法介绍 | 沙湖王
  • MySQL主从同步设置和同步错误处理
  • Mysql note 2
  • Android拓展系列(8)--Vim插件便捷管理(使用git submodule和pathogen)
  • DHCP中继与vlan的隔离
  • poj 3041 Asteroids(二分图最小顶点覆盖)
  • linux下rsync+inotify实现文件时实同步
  • Windows批处理生成目录树
  • Linux中安装.rpm、.tar和.tar.gz或.tgz包
  • PHP Memcache(一):windows mencache安装
  • Linux内核Power Management配置注释
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • css属性的继承、初识值、计算值、当前值、应用值
  • ESLint简单操作
  • GraphQL学习过程应该是这样的
  • JavaScript学习总结——原型
  • markdown编辑器简评
  • Node项目之评分系统(二)- 数据库设计
  • Quartz初级教程
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • VuePress 静态网站生成
  • 分享一份非常强势的Android面试题
  • 基于web的全景—— Pannellum小试
  • 前端知识点整理(待续)
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 消息队列系列二(IOT中消息队列的应用)
  • 小试R空间处理新库sf
  • 终端用户监控:真实用户监控还是模拟监控?
  • ​2021半年盘点,不想你错过的重磅新书
  • ​力扣解法汇总946-验证栈序列
  • #数学建模# 线性规划问题的Matlab求解
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (C++17) optional的使用
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (转)Oracle存储过程编写经验和优化措施
  • (转)scrum常见工具列表
  • (转)visual stdio 书签功能介绍
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .NET中 MVC 工厂模式浅析
  • @我的前任是个极品 微博分析
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [20180224]expdp query 写法问题.txt
  • [codeforces]Levko and Permutation
  • [GN] Vue3.2 快速上手 ---- 核心语法2
  • [hdu 3065] 病毒侵袭持续中 [AC自动机] [病毒特征码匹配]
  • [LeetCode] Wildcard Matching
  • [LeetCode]—Permutations 求全排列