【C++】auto

发布时间:2026/10/8 14:28:49
【C++】auto auto 的作用作用自动类型推导编译器根据初始化表达式自动推断变量类型像一些需要类中的迭代器等都可以自动适配类型。旧 C 语言里auto是「自动存储期」关键字C11 起被重新定义成类型占位符。auto a 10; // int auto b 3.14; // double auto str hi; // const char* string s abc; // std::string auto ch s.begin();代码对比string s abc; // std::string std::string::iterator it s.begin(); auto it s.begin();重要规则必须初始化不能写auto a;没有初始值无法推导一条声明多个变量推导出来类型必须相同否则编译报错auto会默认丢弃顶层 constconst int m 5; auto n m; // n 是 int不是 const int推导规则等价于模板实参推导for 的循环用法vectorint v{1,2,3}; for(auto val : v){ cout val; }auto 会对内容进行依次打印出来原理就是 auto 会调用类里面对应的 begin 和 end 迭代器进行确定为位置如果类中没有begin 和end 会出现编译错误的情况。auto 的 const 和 const auto 只自动匹配基础类型不会自动给变量加上引用也不会默认保留变量的顶层 const想要引用、只读 const 效果需要我们自己在 auto 旁边写 /const。带引用、const 修饰int x 100; auto r x; // int 引用 const auto cr x; // const int auto *p x; // int*string 的 auto 的运用string s hello; // auto拷贝char副本修改不影响原字符串 for(auto ch : s) { ch x; } cout s endl; // hello原串没变 // auto引用字符可以修改原字符串 for(auto ch : s) { ch x; } cout s endl; // xxxxx // const auto 只读遍历 const string s2 test; for(const auto ch : s2) { cout ch; }注意像这种比较大型的类单纯用auto 会加大拷贝开销导致运行代码内存时间上的负担最好能用应用就应用只读不写的就多加上 const 。基础小类型int、charauto拷贝代价很低写起来简单只读遍历可以直接 auto大对象string、自定义类✅只读优先const auto避免拷贝性能最优 ✅需要修改容器元素auto❌不推荐单纯auto会复制一份大对象产生额外开销易错点vectorstring vec{A,B}; for(auto x : vec){ x new; // ✅正常修改容器元素 } const vectorstring cv{1,2}; // for(auto x : cv) {} // ❌报错普通引用不能绑定const容器的元素 // 出现一个权限放大的情况 for(const auto x : cv){} // ✅必须const auto

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询