目录
前言
C++在1978年就由Bjame Sgoustrup在Bell实验室发明出来,但是第一次标准化已经是十多年后的1994年了。发布了第一个国际通用标准C++,C++98
。此后十多年里没有更新,直到2011年发布了C++11
。从C++11
过后C++标准委员会平均3年发布一个版本,今年也是C++20
发布。但是他的小弟Java自从1996年Sun公司发布第一个开发工具包JDK1.0开始,平均一年一个小版本,三年一个大版本。这一点上C++还是落后了,但是在C++11
之后C++的现代化历程开始了,也带来一些易用性的提升,我们就来看一看这部分提升到底有什么效果。
高级for
在C++11之前,如果我们需要对一个vector或者list进行遍历,我们通常需要使用迭代器。方法如下
for (vector<int>::iterator i = vec_int.begin(); i != vec_int.end(); i++)
{
cout << *i << " ";
}
但是C++11引入了一个基于范围的for循环,使用方法for(int temp : vec_int)
。其中int替换为容器内的类型,temp是一个临时变量,vec_int是一个容器。这样上面这个代码就可以精简为
for (int temp : vec_int)
{
cout << temp << " ";
}
这是两种方法的结果
可以看出来的是原有的for循环方式能够实现的方式在新版for循环方式中都可以实现。所以在C++11的工程中尽量使用新版for循环。
- 使用条件: 容器必须提供
begin()
和end()
函数,并且容器边界确定。其实这两个条件在旧版C++中可以用iterator+for
可以实现那么在新版的for循环中也可以实现。
类型推导
auto
很多知道C++是静态类型语言但是这个auto来的就很奇特。下面我们就来看看这个·auto
是如何使用的。
int i = 50;
auto temp = i;
cout << "i ‘s type : " << typeid(i).name() << endl;
cout << "temp‘s type : " << typeid(temp).name() << endl;