auto 关键字指示编译器使用已声明变量的初始化表达式或 lambda 表达式参数来推导其类型。

在大多情况下,建议您使用 auto 关键字(除非您确实需要转换),因为此关键字可提供以下好处:

  • 可靠性:如果表达式的类型发生更改(包括函数返回值发生更改的情况),它也能工作。

  • 性能:确保将不会进行转换。

  • 可用性:不必担心类型名称拼写困难和拼写有误。

  • 效率:代码会变得更高效。

可能不需要使用 auto 的转换情况:

  • 当需要特定类型且不需要执行任何其他操作时。

  • 表达式模板帮助程序类型(例如,(valarray+valarray) 和初始值设定项列表),尽管您很少选择编写 auto x = { 1 }; 并实际需要获取 int.

  • 你应该注意到,auto并不能作为函数的返回类型,但是你能用auto去代替函数的返回类型,当然,在这种情况下,函数必须有返回值才可以。auto不会告诉编译器去推断返回值的实际类型,它会通知编译器在函数的末段去寻找返回值类型。在下面的那个例子中,函数返回值的构成是由T1类型和T2类型的值,经过+操作符之后决定的。
    template <typename T1, typename T2>
    auto compose(T1 t1, T2 t2) -> decltype(t1 + t2)
    {
       return t1+t2;
    }
    auto v = compose(, 3.14); // v's type is double
    C++11加强了for语句的功能,以更好的支持用于遍历集合的“foreach”范式。在新的形式中,用户可以使用for去迭代遍历C风格的数组、初始化列表,以及所有非成员begin()和end被重载的容器。当你仅仅想获取集合/数组中的元素来做一些事情,而不关注索引值、迭代器或者元素本身的时候,这种for的形式非常有用。
    std::map<std::string, std::vector<int>> map;
    std::vector<int> v;
    v.push_back();
    v.push_back();
    v.push_back();
    map["one"] = v;
    
    for(const auto& kvp : map)
    {
      std::cout << kvp.first << std::endl;
    
      for(auto v : kvp.second)
      {
         std::cout << v << std::endl;
      }
    }
    
    ,,,,};
    for(int& e : arr)
    {
      e = e*e;
    }

      

      

     
 

最新文章

  1. vc11(vs2012)下编译php
  2. 深入理解JVM内存模型
  3. 新浪微博客户端(5)-自定义UISearchBar
  4. Android自定义progressBar
  5. JAVA定时执行任务的三种方法
  6. wp ApplicationBar
  7. 【Qt】Qt Creator快捷键【转】
  8. 基础数据结构 之 树(python实现)
  9. VisualStudio自定义代码段_方法一
  10. 网易云课堂_C++开发入门到精通_章节7:模板
  11. Nginx 变量漫谈(六)
  12. 跨语言时区处理与Epoch
  13. Python 语法1
  14. linux服务器后台运行服务
  15. Thinkphp 中的自动验证 上一篇有例子
  16. Hadoop框架之HDFS的shell操作
  17. 多线程学习笔记四之Condition实现分析
  18. flink-jdbc sink
  19. setTimeout()的应用
  20. .NET&amp;C#的异常处理

热门文章

  1. uva12489 Combating cancer(树同构)
  2. Sicily 1323. Switch text
  3. [Leetcode][020] Valid Parentheses (Java)
  4. linux内核学习之一:环境搭建--安装Debian7.3
  5. UILabel自适应高度和自动换行
  6. [UVALive] 6492 Welcome Party(最小点覆盖)
  7. VIM下Express jade空格问题:expected &quot;indent&quot;, but got &quot;newline&quot;
  8. cf C. Matrix
  9. cf B. Flag Day
  10. 使用CPU的AVX指令