详细分析Visual Studio auto关键字

开发 后端
这里介绍从Visual C++ 2010开始,Visual Studio auto关键字将用于指引编译器根据变量的初始值来决定变量的数据类型。

Visual Studio经过长时间的发展,很多用户都很了解Visual Studio auto关键字了,这里我发表一下个人理解,和大家讨论讨论。在C++0x中,auto关键字的意义发生了改变。从Visual C++ 2010开始,Visual Studio auto关键字将用于指引编译器根据变量的初始值来决定变量的数据类型。换句话说,我们可以把auto当成一种新的数据类型,它可以“从初始化器(initialize)中推导出所代表的变量的真正类型”。这种对auto关键字的使用方式可以大大消除当前替代方式所导致的冗长和易出错的代码。我们看一个实际的例子:

#include <iostream> 
#include <map> 
#include <ostream> 
#include <regex> 
#include <string> 
using namespace std;  
using namespace std::tr1;  
 
int main() {  
map<string, string> m;  
 
const regex r("(\\w+) (\\w+)");  
 
for (string s; getline(cin, s); ) {  
smatch results;  
if (regex_match(s, results, r)) {  
m[results[1]] = results[2];  
}  
}  
for (auto i = m.begin(); i != m.end(); ++i) {  
cout << i->second << " are " << i->first << endl;  
}  
 
return 0;  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.

#t#在这段代码中,我们使用Visual Studio auto关键字来代替了真正的数据类型map<string, string>::iterator,这使得整个代码自然而简洁。

另外,跟其他数据类型一样,我们也可以对Visual Studio auto关键字进行修饰,例如添加const,指针(*),左值引用(&),右值引用(&&)等等,编译器会根据auto类型所代表的真正的数据来决定这些修饰的具体含义。

为了兼容一些旧有的C++代码,我们可以使用/Zc:auto这个编译器选项,来告诉编译器是采用Visual Studio auto关键字的原有定义还是在新标准C++0x中的定义。

责任编辑:佚名 来源: NET130
相关推荐

2009-12-16 14:09:14

Visual Stud

2009-11-24 13:56:53

Visual Stud

2009-09-25 14:23:39

2009-09-28 10:39:01

Hibernate基础

2009-09-14 16:21:34

LINQ To XML

2009-06-18 14:00:51

2009-10-10 13:52:57

VB Update方法

2009-09-09 09:48:43

Linq延迟加载

2009-12-28 13:24:24

BGPMPLS VPN

2009-09-14 13:50:35

LINQ编程模型

2009-09-08 15:56:50

Linq使用Group

2009-11-20 13:11:44

Oracle XML数

2010-01-06 13:50:37

.NET Framew

2009-09-07 13:19:44

C#线程同步

2009-09-04 15:43:07

C#流模型

2009-12-07 15:37:00

WCF控件

2010-04-26 18:17:19

Oracle存储过程

2009-03-24 08:30:54

AndroidGoogle移动os

2009-09-03 17:57:06

C#声明事件

2011-09-24 12:34:03

点赞
收藏

51CTO技术栈公众号