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. Java 并发性和多线程

    一.介绍 在过去单 CPU 时代,单任务在一个时间点只能执行单一程序.之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程.虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个 ...

  2. Cursor use

    Ref:http://www.cnblogs.com/Gavinzhao/archive/2010/07/14/1777644.html declare @Id varchar(100),@name ...

  3. jsp:中文乱码解决

    说明:request乱码指的是:浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码: response乱码指的是:服务器向浏览器发送的数据包含中文字符,浏览器中显示的是乱码: ...

  4. Linux入门:运行级别解析

    Linux入门:运行级别解析   一.查看当前运行级别 Ubuntu中,runlevel命令 可以查看当前运行级别: CentOS中,who -r 命令查看当前运行级别:   www.2cto.com ...

  5. case while for

    #!/bin/bash#create by howhy 20161214#mysql server start stop restart. /etc/init.d/functionsmysqldir= ...

  6. javascript编程: JSON, Mapping, 回调

    使用 Javascript  编程, 组合使用 JSON 数据格式,Mapping 和回调技术, 可以产生很强的表达效果. 在实际工作中, 总会有数据汇总的需求. 比如说, 取得了多个 device ...

  7. Web服务端软件的服务品质概要

    软件品质概述 提供同样功能.产品和服务的服务者中, 竞争力来自功能的多样化和服务品质的差异化, 无论是个体.企业还是国家. 这里的服务指功能.产品的实现程度和处理能力,以及研发/客服提供的技术支持程度 ...

  8. 面试题-链表反转c实现

    // ListReverse.cpp : Defines the entry point for the console application.// #include "stdafx.h& ...

  9. mac 安装phpredis扩展

    curl -O https://nodeload.github.com/nicolasff/phpredis/zip/master tar -zxf master cd phpredis-master ...

  10. Unity使用反射探头实现地面的镜面反射

    最近在看之前的愤怒机器人demo,它的反射通过一个反射相机实现 我尝试在unity5里用反射探头做出镜面反射,但想要调的准确倒是比较难.. .. 后来朋友发我一份反射探头实现镜面反射的文章,解决了这个 ...