最近在复习 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变量 按字典进行排序了!然而后面的unique
和erase
上面都加了注释,根据运行结果来看,整个过程貌似就压根没有执行unique
和erase
操作!
哎,行吧,应该真的有影响!但是我就是想要这个注释怎么办?****在这行注释后面再加上 //
两个斜杠就行了。。。。
如下:
后来又发现修改了一下文件的编码也能解决,,,,,
上面,文件的编码是UTF-8
,需要在注释后面加上 //
才能解决问题!
下面,我把文件的编码改成了 GBK
,不加那个 //
也行:
。。。。。。。。乱七八糟的。。。。。。。
反正有这一回,我是长记性了,以后一行的注释后面都加两个斜杠!
还好我这只是做个小练习出了这么个BUG,要是在写一个大一点的项目,那踏马找这种BUG还不得找死了。
本文分享自微信公众号 - MatlabGUI QtCPP等学习记录(ASparkleSubscription)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。