C++:auto关键字

本文介绍了C++中auto关键字的使用,讨论了如何利用它进行类型推导,以及在std::unordered_map和容器迭代中的应用。例子展示了如何处理字符串和设备管理器的数据结构。
摘要由CSDN通过智能技术生成

#include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
//auto关键字 :自动导出数据类型,但是要有推导依据才能自动推导数据类型

/*std::string*/ char*  GetName()
{
    return "qingxiao";
}
class Devic{};

class DevicManger
{
private:
    //m_Devices是string到vector的映射
    std::unordered_map<std::string,std::vector<Devic*>>m_Devices;
public:
    const std::unordered_map<std::string,std::vector<Devic*>>& GetDevices()
    {
        return  m_Devices;
    }
};

int main()
{
    int a=5;
    auto b=a;//可以看到b类型为int
    auto c=6;//通过字面量类型推导变量类型
    
    std::string name=GetName();//常规 std::string 变成char* 直接赋值就可以,因此当函数类型变为char*,依然可以用此方法
    //引用auto
    //auto name=GetName();//好处在于,如果上面的函数类型改变,不需要修改此处
    int d=name.size();//此时,string变成auto会破坏程序因为char*和int转换不来
    std::cout<<name<<std::endl;
    
    
    std::vector<std::string>strings;
    strings.push_back("Apple");
    strings.push_back("Orange");
    
    
    for(/*std::vector<std::string>::iterator*/ auto it=strings.begin();it!=strings.end();it++)
    {
        std::cout<<*it<<std::endl;
    }
    
    
    DevicManger dm;
    auto devices=dm.GetDevices();
    
     
    std::cin.get();
}

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用中提到,C语言中的auto关键字用于声明变量并自动推断其类型。auto declarator initializer*;的语法表示可以声明一个或多个具有自动类型推断的变量。同时,引用也提到了C语言引入了auto关键字来实现类型推导,通过auto关键字可以方便获取复杂的类型,并简化书写,提高编码效率。 更具体地说,使用auto关键字声明变量时,编译器会根据变量的初始化表达式来推断变量的类型。这样可以减少代码中的类型声明,使代码更加简洁和灵活。例如,在函数参数中使用auto关键字可以实现参数的类型推导,使函数调用更加方便。同时,auto关键字还可以与范围for循环结合使用,自动推断容器中元素的类型。 关于C语言auto关键字的更多详细信息,可以参考引用所提供的Microsoft的官方文档链接。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C++ auto关键字](https://blog.csdn.net/L_Chee/article/details/125349312)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [C++基础:关键字auto](https://blog.csdn.net/weixin_58368590/article/details/124871252)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值