C++的发展 和 C++11

首先,放两个链接:

  1. 算官网吧 Standard C++
  2. 查C++的一些API函数很好用的 The C++ Resources Network - cplusplus

C++发展历程

时至今日(2018.12.12),C++17已经发布,C++20开发进行中。
在这里插入图片描述

GCC支持C++11

有大量的编译器已经支持C++11,当然也包含GCC。
在这里插入图片描述
C++的标准是一个持续发展的过程,不断有新增和删除,所以GCC对C++11的标准支持也是动态的,比如:GCC4.4(v1.0)就支持c++11标准中的auto关键字;GCC4.7才支持Extended friend Declarations;GCC4.8才支持alignas等等。
一般认为4.8版本以上的GCC对C++11的支持比较完整。可以参考下面链接:
GCC支持C++11特性的版本
GCC4.8默认编译程序是用C++98标准,如果要使用C++11标准,需指定-std=c++11。
可以通过man g++,搜索-std查看。
在这里插入图片描述

C++11新特性

C++11标准支持了许多新特性,比如:类型推导关键字auto、空指针nullptr、多线程、lambda表达式等等。更详细的可以参考wiki C++11。下面举一些自己认为很有用的实例。

类型推导关键字auto

举个例子:

map<string, string> address_book;
map<string, string>::iterator iter = address_book.begin(); 

想要遍历这个map,就要声明一个很长的迭代器。
有了auto以后,只需:

map<string, string> address_book;
auto iter = address_book.begin();

简洁了非常多,而且敲代码时候不容易出错。这有时候解决了很都莫名其妙的敲代码失误引起的编译错误。

空指针nullptr

nullptr的引入,可以使得代码语义更加清晰明确,它就是个空指针,而不会是0或者NULL。关于nullptr的内容可以参考另一文章

模板嵌套写法优化 > >

在以前的C++标准中,假如你写一个含有其他模板类型的模板:

vector<vector<int> > vector_of_int_vectors;

你必须在结束的两个’>‘之间添加空格。而且当你写成>>而没有空格时,你将得到困惑和误导的编译错误信息。产生这种行为的原因是C++词法分析的最大匹配原则(maximal munch rule)。
而在C++11标准中,就不这么麻烦了,可以不加空格了。

vector<vector<int>> vector_of_int_vectors;

参考文章和链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值