代码改变世界

C++11各种资源及个人见解

2013-01-31 09:52  yu_yu  阅读(653)  评论(0编辑  收藏  举报

本文是专门针对C++新特性的见解,融合自己学习使用过程中的各种曲折。当然,如果你是反C++联盟或者各种逆反党人士均可以跳过 。其中,肯定有许多不恰当的地方,有很多偏见,但还望各位看官秉持该打就打,该喷就喷的原则,看不惯就就拍吧!

首先,我力图以一种分类形式展现,把语言特性、库和各种最佳实践、Idiom方法介绍给大家。

这里是关于C++11的一个资源清单,如果大家英文好,可以尽情阅读。正如Stroustrup 的观点:C++11 是一门新的语言——一个更好的 C++。C++11比C++03更学院派,而且增加了这么多特性也让人摸不着头脑,这些是问题吗?对于把C++看作信仰的人来说——NOC++ is my lover

对于大多数C++er来说,lambda,nullptr,rvalue-ref,decltype,variadic template这些语言特性都是为库作者设计的,达到立竿见影省力省时的好处。如果涉及到stl的代码,仅仅是重新编译一次,就可以得到性能的提升。不喜欢尝试变化的人,完全无视新语法就是了,为什么这么惧怕呢,要知道,不破不立!

这里是C++11的群号:165666547,如果有兴趣来和大家分享,提问都欢迎加入。

 

WiKI上关于C++11,大家一定得注意看目录,可以有效的帮助大家从运行时性能提高、编译时间提快、以及功能上增强来了解语言核心机制的变化,还有标准库中的扩展,这些都十分有利于开发者。

C++之父对C++11做出的FAQ,这个大家一定的看看,我想,也不需要做出任何解释,干净、入门、利落!

Welcome Back to C++ (Modern C++),是的,MS出的一篇关于如何更好的使用C++来改善我们的代码,GO,骚年们。

 

语言设计就是库设计,库设计就是语言设计

C++语法这么庞杂,C++的库这么繁多。最大的原因是大家都追求一种运行时高效而使用又特别简单的方式,所以各家对别人的库不感冒,认为还不如自己来写!一门语言好用与否,很大程度决定于这么语言的库是否易用。C++11在这方面可谓下足功夫,为了使库工作者开发出更方便简单的接口,增加了大量特性auto、decltype、variable template,etc,同时为了把诟病已久的临时对象拷贝问题解决,引入了move语意。这些都是C++界那些老头子的功劳,还是非常值得肯定表扬~乌拉

库:

1. LINQ for C++

一个用C++11实现的LINQ语法的库,用于循环处理数据。有点函数式编程的感觉,库作者是MS的大牛Marius Bancila

这是其中的example,咋样,玩起来很飘逸吧。我的下一个ProtoBuf for SQL就会采用类似的语法,cool~

#include "cpplinq.hpp"

void computes_a_sum ()
{
    using namespace cpplinq;
    int ints[] = {3,1,4,1,5,9,2,6,5,4};

    auto result =    from_array (ints)
                  >> where ([](int i) {return i%2 ==0;})  // Keep only even numbers
                  >> sum ()                               // Sum remaining numbers
                  ;
}

 

2. A Lightweight Logger for C++

一个利用C++11中variable template实现的日志库,该库线程安全,多输出IO策略,最主要的是足够小巧,不像boost、google的日志库庞大。

语言:

1. 右值引用

http://www.cnblogs.com/tingshuo/archive/2013/01/21/2870035.html