博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在C++里面诸如 *iter++这样的形式是一种规范的写法吗?
阅读量:3661 次
发布时间:2019-05-21

本文共 453 字,大约阅读时间需要 1 分钟。

之前有篇博文叫

提到最好不要使用后置版本。但是也有使用它比较方便的时候

如:

输出vector对象的内容直到遇到(但不包括)第一个负数为止:

auto pbeg =v.begin();

//输出元素直到遇到第一个负值为止

while(pbeg!=v.end()&& *beg>=0)

       cout<<*pbeg++<<endl;//输出当前值并移向下一个元素

 

后置运算符的优先级高于解引用运算符,因此*pbeg++等价于*(pbeg++)。先加一,然后返回 pbeg的初始值的副本作为其求值结果。最终这条语句输出pbeg开始指向的那个元素 ,并将指针移动一个位置。

形如*pbeg++的表达式可能一开始不太容易理解,但其实这是一种广泛使用的写法

书写

cout<<*iter++<<endl;

要比书写下面的等价语句更简洁、也更少出错

cout<<*iter<<endl;

++iter;

大多数C++程序追求简洁,摒弃冗长,因此C++程序员应该习惯于这种写法。一旦掌握了这种写法,程序出错的可能性也会降低。

转载地址:http://frhfn.baihongyu.com/

你可能感兴趣的文章
Docker-Tomcat为何看不到访问界面?
查看>>
IDEA-忽略文件显示
查看>>
UnsupportedClassVersionError-异常解决
查看>>
Mysql (InnoDB&MyISAM )-如何在两种存储引擎中进行选择?
查看>>
SpringAop两种代理模式-源码分析
查看>>
IDEA-自定义常用代码块
查看>>
JAVA多线程-JUC-8锁
查看>>
Vue-实现对象拷贝
查看>>
export 命令导出变量
查看>>
JAVA-快速接入第三方应用登录(QQ、微信、微博)
查看>>
解决Mysql-无法批量更新的问题
查看>>
Springboot-logback配色方案
查看>>
面试题-给定一个“flatten”Dictionary对象,根据键转换成嵌套字典对象
查看>>
用cookies实现主题背景颜色切换,保存选择的颜色
查看>>
用 node.js 开启一个 http服务,返回文件或信息
查看>>
【git】warning: adding embedded git repository
查看>>
git warning: LF will be replaced by CRLF in 解决办法
查看>>
python文件处理
查看>>
CentOS7制作本地yum源
查看>>
参考花书《深度学习》实现一个简易版PCA
查看>>