码迷,mamicode.com
首页 > 编程语言 > 详细

C++11,使简单的事情简单

时间:2015-04-22 01:58:35      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:c++11   c++   

Joe Armstrong说过一句话:

面向对象编程语言的问题在于,它总是附带着所有它需要的隐含环境。你想要一个香蕉,但得到的却是一个拿着香蕉的大猩猩,和整个丛林。

显然地,这将简单问题复杂化了。我们不否认这个世界上,有些代码是不能简单化的。对于那些可以简单化的代码,我们还是希望不要复杂化。如果你是这样的人,没有理由不使用C++11。下面将展示C++11是如何奇迹般地使代码简单化的。

假设有下面一段代码,用于判断容器内是否存在符合我们要求的字符串:

vector<string>::const_iterator cit = vs.cbegin();
for (; cit != vs.end(); ++cit) {
    if (lookForParttern(*cit))
        return true;
}
return false;

对于C++11之前, 这段代码在普通不过了。有了C++11,我们很容易写出下面这样的代码:

for (auto cit = vs.cbegin(); cit != vs.end(); ++cit) {
    if (lookForParttern(*cit))
        return true;
}
return false;

for里面的东西还是放进来比较好,这代码比起之前那段,看起来优雅些了。C++有个range-for,因此我们还可以这样写:

for (auto& x : vs) {
    if (lookForParttern(x))
        return true;
}
return false;

发现简洁了不少。这还不够,我们还可以使用算法,使代码更简洁:

return find_if(cbegin(vs), cend(vs), lookForParttern) != cend(vs);

很好,变成一行代码了。老实说,cbegin,cend写多了也很烦。我们使用range算法可以消除它:

return find_if(vs, lookForParttern) != cend(vs);

和第一段代码比起来,不仅代码短了很多,可读性也有过之而无不及。C++11在不减少运行效率的情况下,大大提升了生产率。可以把Java,C#扔一边了。


C++11,使简单的事情简单

标签:c++11   c++   

原文地址:http://blog.csdn.net/booirror/article/details/45184803

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!