c++11 新特性之 autokeyword
C++11是对眼下C++语言的扩展和修正.C++11包含大量的新特性:包含lambda表达式,类型推导keywordauto、decltype,和模板的大量改进。
g++编译c++11命令加上
-std=c++11
C++11中引入auto第一种作用是为了自己主动类型推导
auto的自己主动类型推导,用于从初始化表达式中判断出变量的数据类型。
通过auto的自己主动类型推导,能够简化我们的编程工作
auto实际上实在编译时对变量进行了类型推导,所以不会对程序的执行效率造成不良影响另外,似乎auto并不会影响编译速度,由于编译时本来也要右側推导然后推断与左側是否匹配。
#include <iostream>
#include <typeinfo>
#include <vector>
using namespace std; template<class T, class U>
void func(T t, U u)
{
auto ret = t*u;
} int main()
{
//auto a; // 错误,auto是通过初始化表达式进行行类型推导,假设没有初始化表达式,就无无法确定a的类型
auto i = 1;
cout << typeid(i).name() << endl; //输出为i,g++编译器下输出i为int类型,MS的vs2008输出为int
auto d = 1.0;
cout << typeid(d).name() << endl; //输出为d,double类型
auto str = "Hello C++11";
cout << str << endl; vector<int> iv;
iv.push_back(1);
iv.push_back(2);
iv.push_back(3); for (auto itr=iv.begin(); itr!=iv.end(); itr++) //自己主动推导为迭代器
cout << *itr << endl; return 0;
}
另外。在使用模板技术时。假设某个变量的类型依赖于模板參数,不使用auto将非常难确定变量的类型(使用auto后,将由编译器自己主动进行确定)。
以下是一个详细的样例。
template <class T, class U>
void Multiply(T t, U u)
{
auto v = t*u;
}
c++11 新特性之 autokeyword的更多相关文章
- C++ 11学习和掌握 ——《深入理解C++ 11:C++11新特性解析和应用》读书笔记(一)
因为偶然的机会,在图书馆看到<深入理解C++ 11:C++11新特性解析和应用>这本书,大致扫下,受益匪浅,就果断借出来,对于其中的部分内容进行详读并亲自编程测试相关代码,也就有了整理写出 ...
- C++11新特性总结 (二)
1. 范围for语句 C++11 引入了一种更为简单的for语句,这种for语句可以很方便的遍历容器或其他序列的所有元素 vector<int> vec = {1,2,3,4,5,6}; ...
- C++11新特性总结 (一)
1. 概述 最近在看C++ Primer5 刚好看到一半,总结一下C++11里面确实加了很多新东西,如果没有任何了解,别说自己写了,看别人写的代码估计都会有些吃力.C++ Primer5是学习C++1 ...
- C++ 11 新特性
C++11新特性: 1.auto 2.nullptr 3.for 4.lambda表达式 5.override ...
- [转载] C++11新特性
C++11标准发布已有一段时间了, 维基百科上有对C++11新标准的变化和C++11新特性介绍的文章. 我是一名C++程序员,非常想了解一下C++11. 英文版的维基百科看起来非常费劲,而中文版维基百 ...
- 在C++98基础上学习C++11新特性
自己一直用的是C++98规范来编程,对于C++11只闻其名却没用过其特性.近期因为工作的需要,需要掌握C++11的一些特性,所以查阅了一些C++11资料.因为自己有C++98的基础,所以从C++98过 ...
- C++11新特性——range for
很多编程语言都有range for语法功能,自C++11起,终于将这个重要功能加入C++标准中.range for语句,可以方便的遍历给定序列中的每个元素并对其执行某种操作. 1.基本语法 for(d ...
- C++11新特性——大括号初始化
C++11之前,C++主要有以下几种初始化方式: //小括号初始化 string str("hello"); //等号初始化 string str="hello" ...
- C++11新特性之六——元编程
C++11新特性之六——元编程
随机推荐
- centos5.5 安装git
查看centos版本 # cat /etc/redhat-release CentOS release 5.5 (Final) 安装git 下载: 如果有老版本的git: #git clone git ...
- eclipse打war包
链接地址:http://jingyan.baidu.com/article/c910274be14164cd361d2ddc.html 一个程序要想放到服务器容器中很多人想到了打一个war包放到tom ...
- JS日历控件
<input type="text" id="st" name="st" onclick="return Calendar( ...
- 一组开源 HTML5 Apps
一组用"画app吧"开发的 HTML5 Apps,默认使用FirefoxOS设备,其实它们都可以在像Android/IPhone/WindowsPhone8/BlackBerry/ ...
- linux配置nfs服务
简单介绍: unix/linux系统一种远程文件文件夹共享的服务,能够把某一个远程的文件文件夹共享到本地,进而像操作本地文件一样,操作这个远程的文件夹. 比如:a主机作为服务端,共享出来test1这个 ...
- uva 10891 Game of Sum(区间dp)
题目连接:10891 - Game of Sum 题目大意:有n个数字排成一条直线,然后有两个小伙伴来玩游戏, 每个小伙伴每次可以从两端(左或右)中的任意一端取走一个或若干个数(获得价值为取走数之和) ...
- C++数据结构之图
图的实现是一件很麻烦的事情,很多同学可能在学数据结构时只是理解了图的基本操作和遍历原理,但并没有动手实践过.在此,我说说我的实现过程. 首先,在草稿纸上画一个图表,这里是有向图,无向图也一样,如下: ...
- Android基调(十六)- Service:startService()、stopService()、bindService()、unbindService()加
直行 第一 另外一种 第三种 总结 开门见山 开启服务有三种情况:假设直接使用服务,则没有必要进行绑定,可是假设要使用服务里面的方法.则要进行绑定. 具体的启动情况有下: ①调用startServic ...
- 如何用 Swift 语言构建一个自定控件
(via:破船之家,原文:How To Make a Custom Control in Swift) 用户界面控件是所有应用程序重要的组成部分之一.它们以图形组件的方式呈现给用户,用户可以通过它 ...
- D.6661 - Equal Sum Sets
Equal Sum Sets Let us consider sets of positive integers less than or equal to n. Note that all elem ...