欢迎来到合肥浪讯网络科技有限公司官网
  咨询服务热线:400-099-8848

25个会让你恋恋不忘的水平动弹网站设计

发布时间:2015-10-14 文章来源:  浏览次数:2124
假如你的代码工作正常并且表现良好,你可能会想知道为什么还要使用C++ 11。当然了,使用用最新的技术感觉很好,但是事实上它是否值得呢?在我看来,谜底毫无疑问是肯定的。我在下面给出了9个理由,它们分为两类:机能上风和开发效率。
获得机能上风
理由1:move语义(move semantics)。简朴的说,它是优化复制的一种方式。有时候复制很显然是铺张的。假如你从一个临时的string对象复制内容,简朴的复制指针到字符缓冲区将比创建一个新的缓冲区再复制要高效得多。他之所以能工作是由于源对象超出了范围。
然而,在这以前C++并没有判定源对象是不是临时对象的机制。move语义通过除了复制操纵外还答应你有一个move构造函数(move constructor)和一个move赋值运算(move assignment)符来提供这个机制。
你知道吗?当你在Visual Studio 2010中使用尺度库中的类如string或vector时,它们已经支持move语义了。这可以防止不必要的的复制从而改善机能。
通过在你的类中实现move语义你可以获得额外的机能晋升,好比当你把它们存储到STL容器中时。还有,move语义不仅可以应用到构造函数,还可以应用到方法(如vector的push_back方法)。
理由2:通过使用种别属性(type traits,如is_floating_point)和模板元编程(template metaprogramming,如enable_if template),你可认为某些特定的类型定制模版,这可以实现优化。
理由3:哈希表现在已经是尺度实现的了,它提供更快速的插入、删除和查找,这在处理大量数据时很有用。你现在可以随便使用unordered_map, unordered_multimap, unordered_set 和unordered_multiset这几种数据结构了。
进步效率
进步效率不仅都是在代码机能方面,开发时间也是宝贵的。C++ 11可以让你的代码更短、更清楚、和更易于阅读,这可以让你的效率更高。
理由4:auto枢纽字可以自动推断类型,所以下面的代码:
vector<vector<MyType>>::const_iterator it = v.begin()
现在可以很简朴的写成:
auto it = v.cbegin()
尽管有些人会说,它躲藏了类型信息,在我看来它利大于弊,由于它减少了视觉混换并展示了代码的行为,还有它可以让你我少打良多字!
理由5:Lambda表达式提供了一种方法来定义匿名方法对象(实际上是闭包),这是代码更加线性和有规律可循。这在和STL算法结合使用时很利便:
bool is_fuel_level_safe() { return all_of(_tanks.begin(), _tanks.end(), [this](Tank& t) { return t.fuel_level() > _min_fuel_level; }); }
理由6:新的智能指针(smart pointer)替代了有题目的auto_ptr,你可以不用担心内存的开释并移除相关开释内存的代码了。这让代码更清楚,并杜绝了内存泄露和查找内存泄露的时间。
理由7:把方法作为first class object是一个非常强盛的特性,这让你的代码变得更灵活和通用了。C++的std::function提供了这方面的功能。方法提供一种包装和传递任何可调用的东西-函数指针, 仿函数(functor), lambda表达式等。
理由8:还有很多其它小的功能,如override、final枢纽字和nullptr让你的代码意图更明确。对我来说,减少视觉混乱和代码中能够更清晰地表达我的意图意味着更兴奋、更高效。
另一个开发效率的方面是错误检测。假如你的错误在运行时发生,这意味着你至少需要运行软件,并可能得通过一系列步骤来重现错误,这需要时间。
C++ 11提供了一种方法来检查先决前提并尽早的在可能的时机捕捉错误-编译过程中,在你运行代码前。这就是理由9。
这是通过静态断言(static_assert)和种别属性模版实现的。这种方法的另一个好处是,它不需要占用任何的运行时开销,没有什么机能损失!
现在开始把握C++ 11
在C++ 11尺度中除了上描述的还有更多的改动和新功能,它需要一整本数来描述。不外,我相信它们是值得你花时间去学习的。你将省去以往花在进步效率上的时间。良多主流的编译器已经开始支持C++ 11的一些尺度了。还等什么?开始吧!
注:良多名词觉得翻译成了中文还不如看英文来的惬意,翻译成了中文的后面括号里备注了原英文单词。

上一条:网站优化排名网站建设不要...

下一条:网站制作要留意的色彩方面...