心灵的旅行
posted on 2007-11-28 11:56 lymons 阅读(1675) 评论(17) 编辑 收藏 引用 所属分类: C++
这个效率太低了 回复 更多评论
同上,这么写会死人的 回复 更多评论
这样的写法太差了 回复 更多评论
那你们写个好一点的啊 回复 更多评论
这个是尾递归啊,直接改成循环不更好万一有一行巨长的,直接栈溢出了……当然你要说没那么长的,也无所谓 回复 更多评论
老大,你看看boost::algorithm里面关于string的吧。你的效率太低了。 回复 更多评论
str.erase(remove_if(str.begin(), str.end(), isspace), str.end());喏,还是很容易,一句就搞定了。 回复 更多评论
博主太恐怖了,居然敢返回string&. 回复 更多评论
一般用递归去除Left和Right没有关系,但是整体的话是不行的 回复 更多评论
请问 沐枫 老兄,这个例子里返回string&会有什么严重后果呢? 回复 更多评论
效率的却有问题啊 回复 更多评论
@沐枫您这个最棒. 谢谢!多谢各位热心人的指点,俺是不胜感激.PS 如果是考虑效率的话,我是认为用C来实现可能效率比string更高一些吧. 回复 更多评论
效率高不高不是你认为不认为的问题。而是实际使用环境造成的。现在的编译器已经不是当年的编译器了。你要是没有把编译器的各种优化功能用好,就很难说哪种方法在哪个使用环境下,谁的效率更高。就拿VC来说吧。VC除了各种编译时和链接时的优化外,还有一个按配置优化的功能。也就是让你的程序在运行中收集信息,经过一段长时间的使用以后,将收集的信息,让编译器根据这个信息对代码重新进行优化。这种优化才是真正的根据实际需要优化的。 回复 更多评论
@owlcn就好象返回局部变量的指针一样。这样,有可能你可以运行,也有可能在某些时候就不能运行。。。 回复 更多评论
@沐枫 程序里返回的并不是局部变量的指针,它返回的是传入到函数里参数的地址。 所以,调用者拿到该返回值跟实参是一个东西。 在函数返回给调用者之前,实参的内容还没有被销毁。 回复 更多评论
@沐枫 关于效率问题,俺的想法是 看这段代码放到哪里去运行,如果是在游戏,嵌入式系统等,或者成为系统性能瓶颈的时候,必须要考虑这段代码的性能的问题。 如果就是在其他的商业软件里,就不必要为这段代码考虑效率的问题,而是要着重与开发工时一起权衡考虑。我们不会为了仅仅提高了系统0.0001%的性能而浪费0.1%的工时。当然,也不是完全不考虑效率的问题,而是在一定工时里写出尽可能漂亮,尽可能高效的代码。 这仅仅是我的一点拙见,有不对之处请斧正。 另外,我对把“优化工作完全交给编译器来做”这个观点不敢苟同。 写的非常糟糕的代码,编译器的优化远远比不上用人把这段代码重写而优化的好。 完全靠编译器来优化我认为有点不妥。 回复 更多评论
优化工作完全交给编译器来做--呵呵,这不是我说的,是你说的。我也不完全认同。优化的问题太复杂了,不可能讨论的出来结果的,因为它与实际情况关系太密切了。至于返回引用,的确是我看错了。不好意思。 回复 更多评论
Powered by: C++博客 Copyright © lymons