C++:写注释也能影响代码的运行结果??????I was shocked!

最近在复习 C++ Primer,做第10章的练习10.9时碰见一个诡异的小问题,也算是一个比较难踩的坑吧,这里记录一下。

先简单介绍下这个题目,以及解法:

这个题目就是要给一个 std::vector 中的元素去重。首先调用标准库 中的sort算法 按照字典来排序。然后调用标准库 中的 unique 算法去除相邻重复的元素,但是算法并不会修改容器,所以最后还得调用容器本身的 erase方法来删除尾部那些多余的内容。

函数的输入是:

std::vector<std::string> vec{"123", "Mitch", "Hong", "Mitch", "Hong", "123", "Mitch", "256", "123", "Mitch"};/// 我把这个vec传递给了上面这个函数

上图所示,这和我们预期的效果并不一样,我们预期输出的结果应该如下:

123     256     Hong    Mitch

但是,这个函数写的是没错的,因为书上就是这么写的 。唯一和书上不一样的地方就是我加了注释。

难道问题出在注释上面?

难道代码的注释对程序的运行结果也有影响?

仔细观察好像是这么回事。我的sort那块上卖弄没写注释,执行函数之后的结果就是对我输入的 std::vector变量 按字典进行排序了!然而后面的uniqueerase上面都加了注释,根据运行结果来看,整个过程貌似就压根没有执行uniqueerase操作!

哎,行吧,应该真的有影响!**但是我就是想要这个注释怎么办?**在这行注释后面再加上 // 两个斜杠就行了。。。。

如下:


后来又发现修改了一下文件的编码也能解决,,,,,

上面,文件的编码是UTF-8,需要在注释后面加上 //才能解决问题!

下面,我把文件的编码改成了 GBK,不加那个 // 也行

。。。。。。。。乱七八糟的。。。。。。。

反正有这一回,我是长记性了,以后一行的注释后面都加两个斜杠!

还好我这只是做个小练习出了这么个BUG,要是在写一个大一点的项目,那踏马找这种BUG还不得找死了


本文分享自微信公众号 - MatlabGUI QtCPP等学习记录(ASparkleSubscription)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

一篇文章带你了解JavaScript日期

日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用