zoukankan      html  css  js  c++  java
  • C++11的auto关键字

    用法:

    一是在变量声明时根据初始化表达式自动推断该变量的类型。适用于类型冗长复杂,模板类型等

    二是在声明函数时作为函数返回值的占位符

     

    注意事项:

    1.使用auto关键字的变量必须有初始值。类似引用

    2.函数参数和模板参数不能被声明为auto。

    3.使用auto关键字声明变量的类型,不能自动推导出顶层的CV-qualifiers和引用类型,除非显示声明

    使用auto关键字进行类型推导时,如果初始化表达式是引用类型,编译器会去除引用,除非显示声明

    使用auto使用auto关键字进行类型推导时,编译器会自动忽略顶层const,除非显示声明

    使用场景
    ex1:遍历字符串
    std::string str = “hello, world”;  
    for(auto ch : str) {  
         std::cout << ch << std::endl;  
    }  
    遍历str,输出每个字符,同时用上auto,简直是如虎添翼。

    ex2:遍历数组
    int arr[] = {1, 2, 3, 4};  
    for(auto i : arr) {  
         std::cout<< i << std::endl;  
    } 
    不用知道数组容器的大小,即可方便的遍历数组。

    ex3:遍历stl 容器
    std::vector<std::string> str_vec = {“i”, “like”,  "google”};  
    for(auto& it : str_vec) {  
         it = “c++”;  
    }  
    在这段程序中,可以返回引用值,通过引用可以修改容器内容。然后用到了初始化列表,在下一篇文章中,将会介绍。

    ex4:遍历stl map 
    std::map<int, std::string> hash_map = {{1, “c++”}, {2, “java”}, {3, “python”}};  
    for(auto it : hash_map) {  
         std::cout << it.first << “	” << it.second << std::endl;  
    }  

    遍历map返回的是pair变量,不是迭代器。

  • 相关阅读:
    商贸通帐套隐藏方法
    固定资产打开提示:上年度数据未结转!
    ZOJ 2432 Greatest Common Increasing Subsequence
    POJ 1080 Human Gene Functions
    POJ 1088 滑雪
    POJ 1141 Brackets Sequence
    POJ 1050 To the Max
    HDOJ 1029 Ignatius and the Princess IV
    POJ 2247 Humble Numbers
    HDOJ 1181 变形课
  • 原文地址:https://www.cnblogs.com/spruce/p/12120892.html
Copyright © 2011-2022 走看看