Articles

C++11 auto

auto可能算是C++0x新增功能中最简单,而且比较实用的一个关键字了。在C++98中,如果我们要遍历一个容器,经常要用到iterator,例如:

#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
  vector ints(5);
  generate( ints.begin(), ints.end(), rand );

  for (vector::iterator i = ints.begin();
       i != ints.end(); ++i)
  {
    cout << *i << " ";
  }
  return 0;
}

而在C++0x中,由于给auto关键字增加了新的含义,所以可以在给变量赋值的时候,由编译器自动根据赋值的类型来推算变量的类型,从而省去了一长串指定变量类型的麻烦。这是否也意味着,auto关键字的引入,使C++这种强类型的语言,在一定程度上,稍微弱化了一点。

for (auto i = ints.begin(); i != ints.end(); ++i)
{
  cout << *i << " ";
}