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

C++学习(一):现代C++尝试

时间:2017-01-19 21:36:47      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:include   end   rar   style   cto   vector   push   range   http   

  C++是一门与时俱进的语言。 早期的C++关注的主要问题是通用性,却没有太多关注易用性的问题,使得C++成为了一门多范式语言,但是使用门槛较高。

  从2011开始,C++的标准进行了较大的更新,开始更多地关注易用性。通常,2011年的C++标准称为C++11,又称为C++0X。目前,C++的标准基本上每三年更新一次,因此有了2014的C++14,以及今年即将发布C++17标准。如果继续是三年发布一个标准,可以预期,在2020会有C++20标准。目前GCC 6.1开始已经默认默认使用 C++14 标准。

  现代C++的详细内容请参考维基百科或者http://en.cppreference.com或者MSDN的介绍:欢迎回到 C++(现代 C++)

  本篇将举一个简单的例子,通过三个特性,说明现代C++的魅力。如下:

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 int main()
 5 {
 6     //1.‘Range For‘ And ‘Auto‘
 7     char str[] = "hello";
 8     for(auto ch:str)cout<<ch;
 9     cout<<endl;
10     //2.‘using‘
11     using vecint = vector<int>;
12     vecint ivec;
13     for(auto ele:{1,2,3})ivec.push_back(ele);
14     for(auto ele:ivec)cout<<ele<<endl;
15     //3.generalized lambda
16     auto f = [](auto x,auto y){return x+y;};
17     auto g = [](auto func,auto z){return func(3,z)+4;};
18     auto apply = [](auto func,auto ele){return func(ele);};
19     auto square = [](auto ele){return ele*ele;};
20     cout<<f(2,3)<<endl;
21     cout<<g(f,5)<<endl;
22     cout<<f(string("hello"),string(" world"))<<endl;
23     cout<<apply(square,8.1)<<endl;
24 }

  编译: $ g++ -std=c++14 main.cpp 

  输出:

$ ./a
hello
1
2
3
5
12
hello world
65.61

  涉及的三个特性:

  1.Range-based for loop (since C++11)

  基于范围的for循环在很多语言早就有了,比如Python,Java1.5+。这是一个易用特性。

  2.‘using‘关键字用于别名

  using增加了新用法,算是老词新意,用于简化过长的类型声明,目前Java依然没有这个特性。

  3.Generalized lambda

  泛型Lambda,有一点类似C++中模版,在这里比模版简洁。

  小结:

  这个例子给我的感觉是,如果连auto都可以省略掉的话,这语法基本上就类似Python了。这也说明,C++开始吸收其他语言的优点,成为一门越来越现代化的语言。目前,越来越多的新项目开始使用C++的新特性。为了避免落后,我们有必要重新认识C++。

C++学习(一):现代C++尝试

标签:include   end   rar   style   cto   vector   push   range   http   

原文地址:http://www.cnblogs.com/wurui1994/p/6308646.html

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