C++11增加了许多的特性,auto就是一个很明显的例子。  还有就是typedid()获取数据变量的类型

看下面简短的代码:

atuo: 很像java中的加强for循环....。

 //获取一个数据变量的类型
#include<iostream>
#include<stdlib.h> int main() { double db = 10.9;
double *ps = &db;
auto var =*ps;
std::cout<<typeid(var).name()<< std::endl;
getchar();
return ;
}

关于C++关于款字符的使用:

 //关于宽字符的使用
#include<iostream> #include<stdlib.h>
#include<locale> int main(int argv ,char args []) { setlocale(LC_ALL, "chs"); //这就是设定为本地,中文简体
wchar_t * p2 = L"1234frd";
std::wcout << p2 << std::endl;
wchar_t *pi = L"北京adas,你好!";
std::wcout << pi <<std::endl; getchar();
return ;
}

关于数组类型的使用:

 //新数组的使用
#include<iostream>
#include<array>
#include<stdlib.h> int main(int argv ,char args []) { //array数据类型 std::array<double ,>data={,,,,};
for (auto var : data) {
std::cout << "var =" << var << std::endl;
}
getchar();
return ;
}

对于这里,我们需要知道的是,array的建立实在栈的基础上,所以最大尺寸不要大于1M ,不然会出现栈溢出。

而对于vector而言,是建立在堆上的,所以没有溢出的说法。

4, C++新特性,lambda表达式(匿名函数)

 //新数组的使用
#include<iostream>
#include<vector>
#include<algorithm>
#include<stdlib.h> int main(int argv ,char args []) { std::vector<int> myvec;
myvec.push_back();
myvec.push_back();
myvec.push_back();
myvec.push_back();
myvec.push_back();
int res = ;
//lambda 表达式 求和
//&res直接操作一个变量,res等价于返回值,x代表参数
//每次充当迭代器指向的元素,大括号就是代码
std::for_each(myvec.begin(), myvec.end(), [&res](int x) {res += x; });
std::cout << res << std::endl;
std::cin.get();
return ;
}

上面的实例,做的就是一个一个从1~5的累加过程。采用迭代器实现lambda函数。

5. 函数包装器管理内嵌函数:

对于这一个C++高级语法的作用:

第一:  可以用作设计执行接口,接口设计关卡,也可以用来计数。

第二: 可以内嵌到另一个函数,实现函数的内嵌。游戏开发中,经常使用到这种方法。

/* 函数包装器管理内嵌函数 */
/*
以一个简单的四则运算为例子
*/
//#pragma warning(disable: 2064)
#include<stdio.h>
#include<iostream>
#include<functional> template <typename T ,typename F>
T run(T a , T b , F f) { return f(a , b);
} int main(int argc , char * args []){ using std::function;
double db = 12.9; //double *
//加 减 乘 除
function<double(double,double)> Add = [](double a , double b) {
return a+b;
};
function<double(double, double)> Sub = [](double a, double b) {
return a - b;
};
function<double(double, double)> Mul = [](double a, double b) {
return a*b;
};
function<double(double, double)>Div = [](double a, double b) {
return a / b;
};
//定义一个函数数组
function<double(double, double)>p[]= { Add,Sub,Mul,Div };
char str[] = "+-*/";
int i = ;
for(auto fun : p )
std::cout <<"12 "<<str[i++]<<" 13 ="<< run<double>(,,fun) <<std::endl;
std::cin.get();
return ;
}

运行结果如图:

当然对于函数包装器而言,还是可以调用外部函数的。不然怎么彰显它的高级二字。

代码:

 /* 函数包装器管理内嵌函数 */
/*
以一个简单的四则运算为例子
*/
//#pragma warning(disable: 2064)
#include<stdio.h>
#include<iostream>
#include<array>
#include<functional> template <typename T ,typename F>
T run(T a , T b , F f) { return f(a , b);
}
double show(double a, double b) { std::cout << "这是一个外部函数,被调用" << std::endl;
return (a+b);
}
int main(int argc , char * args []){ using std::function;
double db = 12.9; //double *
//加 减 乘 除
function<double(double,double)> Add = [](double a , double b) {
return a+b;
};
function<double(double, double)> Sub = [](double a, double b) {
return a - b;
};
function<double(double, double)> Mul = [](double a, double b) {
return a*b;
};
function<double(double, double)>Div = [](double a, double b) {
return a / b;
};
//定义一个函数数组
function<double(double, double)>p[]= { Add,Sub,Mul,Div ,show};
char str[] = "+-*/+";
int i = ;
for(auto fun : p )
std::cout <<"12 "<<str[i++]<<" 13 ="<< run<double>(,,fun) <<std::endl;
std::cin.get();
return ;
}

C++ 高级语法学习与总结(代码实例)的更多相关文章

  1. Swift高级语法学习总结(转)

    Swift高级语法学习总结 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参 ...

  2. Swift高级语法学习总结

    Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如 ...

  3. javascript高级语法学习

    可维护的代码意味着: 可读的 一致的 可预测的 看上去就像是同一个人写的 已记录 命名函数表达式 (function fn(){}) 他是表达式的原因是因为括号 ()是一个分组操作符,它的内部只能包含 ...

  4. 大数据之scala高级语法学习

    协变 案例一: class Animal {} class Bird extends Animal {} class Animal {} class Bird extends Animal {} // ...

  5. Swift基础语法学习总结

    Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift ...

  6. 深度学习之卷积神经网络CNN及tensorflow代码实例

    深度学习之卷积神经网络CNN及tensorflow代码实例 什么是卷积? 卷积的定义 从数学上讲,卷积就是一种运算,是我们学习高等数学之后,新接触的一种运算,因为涉及到积分.级数,所以看起来觉得很复杂 ...

  7. PHP高级特性-反射Reflection以及Factory工厂设计模式的结合使用[代码实例]

    PHP高级特性-反射以及工厂设计模式的结合使用 [结合 Laravel-Admin 代码实例讲解] 利用反射来实现工厂模式的生产而无需创建特定的工厂类 本文地址http://janrs.com/?p= ...

  8. iOS开发——语法篇OC篇&高级语法精讲二

    Objective高级语法精讲二 Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和 ...

  9. javascript高级实战学习

    学习目标: - 理解面向对象开发思想 - 掌握 JavaScript 面向对象开发相关模式 - 掌握在 JavaScript 中使用正则表达式 - typora-copy-images-to medi ...

随机推荐

  1. this的指向

    在JS中,有三种需要注意的this:寻常的this/事件的this/ajax请求的this. 寻常的this 这种this的判断很简单,this是指向执行函数的对象.下面是事例说明: var name ...

  2. Struts 404 The requested resource is not available

    出现这种错误一般是struts.xml配置错误,重点针对<action> 的class属性的全名 因为struts感觉应该是先加载所有的配置文件,如果配置文件有错误的话,所有的资源就都无效 ...

  3. JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么?

    JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么? 联系: JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达. JSP编译后是& ...

  4. javascript的类、委托、事件

    javascript中的类: javascript中的类 );         p2.show();                  //注:Javascript中没有真正的方法重载 看起来很简单吧 ...

  5. 使用boost的asio,io_service无法初始化

    今天用vs编一个用asio写的程序,发现在tcp::acceptor::open()失败,查了好久,发现是acceptor绑定的io_service没有正确的初始化,又查了半天,发现是需要加一个预编译 ...

  6. ubuntu登陆出现问题

    手贱改了用户root权限结果登陆时提示system administrator is not allowed to login from this screen(郁闷勒) 这时可以按ctrl+F2进入 ...

  7. java—数组乘积输入: 一个长度为n的整数数组input 输出: 一个长度为n的数组result,满足result[i] = input数组中,除了input[i] 之外的所有数的乘积,不用考虑溢出例如 input {2, 3, 4, 5} output: {60, 40, 30, 24}

    /** * 小米关于小米笔试题 数组乘积输入: 一个长度为n的整数数组input 输出: 一个长度为n的数组result,满足result[i] = * input数组中,除了input[i] 之外的 ...

  8. yii2框架原生的结合框架使用的图片上传

    首先我们要从model层开始写起,主要是为了创建验证规则,还有图片上传的路径以及图片的命名规则(UploadForm.php) 接下来我们要在控制器层写好业务逻辑,就是什么情况下直接在调用model层 ...

  9. html与jsp

    1. 什么是 HTML 语言? HTML文件有什么特征? 答:HTML是超文本标记语言(Hypertext Mark-up Language)的缩写,主要用来创建与系统平台无关的网页文档.它是目前网络 ...

  10. [问题2014A12] 复旦高等代数 I(14级)每周一题(第十四教学周)

    [问题2014A12]  设 \(A,B\) 是 \(n\) 阶方阵且满足 \(AB=BA=0\), \(\mathrm{r}(A)=\mathrm{r}(A^2)\), 证明: \[\mathrm{ ...