关于 auto,你需要知道的一切

关于 auto,你需要知道的一切

Leo2011 警示后人

话说咱写 STL 的时候经常会要写迭代器,大概是这么一大串东西:

vector<int>::iterator iter = data.begin();

好烦啊!而且,iterator 这个单词容易写错(CE:走好不送)……

于是,在 C 艹 11 标准中,C 艹开发者发明了一个超级好用的东西:auto!

auto 这货类似于 Python 定义变量,会自动确定它的类型!

如:

auto a = 3; // a为int类型

auto b = a + 0.1; // b为double类型

好爽哦有木有!

于是,开头的那段代码就可以写成这德行:

auto iter = data.begin();

你以为这就结束了?不,还有!

咱还能这么玩:

1
2
3
for (auto i : data) {  // 不用auto写也行,只不过auto较简便
// 正常写,i是普通的迭代器
}

不过需要注意几点:

  1. auto 和 for 里用冒号的写法和 to_string 函数一样,都是 C 艹 11 的新特性,在 Dev-C 艹中需要单独设置(否则直接炸裂)

  2. 比赛时采用 C 艹 14 标准,可放心使用

  3. auto 因为要自动判断类型,运行速度会略慢一丁点,不过差距大概就是 scanf 和 cin 那点,一般 €€£ 不会在这点上卡常的 (ps:据说 €€£ 在敛财将评测机由 “老爷机” 置换为 “少爷机”,传闻新评测机能够在 1 秒内 AC () 的数据。但只是传言!现在还没有那么快!老老实实把代码时间复杂度降下来吧)…… 根据 @_trailblazer的指证和常理推断,auto 在编译期间就会判断类型,对运行速度没有影响。

  4. 别尝试在不赋初值的情况下 auto 变量,否则大概是这个场景:

    你: auto arr[10086], x; // 应该是两个 int

    编译器:这踏马谁知道arr这货是啥类型啊……这个x又是个啥???

    Python :我咋可以呢?

    编译器:废话你啥都能存进去……

    评测组件:Compile Error!

    €€£ 砖家组:唉,又一个爆0了的……

    到时候别怪我没提醒你啊……

auto 初始化一定要赋初值!!!

auto 初始化一定要赋初值!!!

auto 初始化一定要赋初值!!!

重要的事情说三遍。

  • 标题: 关于 auto,你需要知道的一切
  • 作者: Leo2011
  • 创建于 : 2023-09-24 17:35:39
  • 更新于 : 2025-08-26 21:09:47
  • 链接: https://www.leo2011.eu.org/2023/09/24/guan-yu-auto-ni-xu-yao-zhi-dao-de-yi-qie/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
Nickname
Email
Website
  • OωO
  • |´・ω・)ノ
  • ヾ(≧∇≦*)ゝ
  • (☆ω☆)
  • (╯‵□′)╯︵┴─┴
  •  ̄﹃ ̄
  • (/ω\)
  • ∠( ᐛ 」∠)_
  • (๑•̀ㅁ•́ฅ)
  • →_→
  • ୧(๑•̀⌄•́๑)૭
  • ٩(ˊᗜˋ*)و
  • (ノ°ο°)ノ
  • (´இ皿இ`)
  • ⌇●﹏●⌇
  • (ฅ´ω`ฅ)
  • (╯°A°)╯︵○○○
  • φ( ̄∇ ̄o)
  • ヾ(´・ ・`。)ノ"
  • ( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
  • (ó﹏ò。)
  • Σ(っ °Д °;)っ
  • ( ,,´・ω・)ノ"(´っω・`。)
  • ╮(╯▽╰)╭
  • o(*////▽////*)q
  • >﹏<
  • ( ๑´•ω•) "(ㆆᴗㆆ)
  • 😂
  • 😀
  • 😅
  • 😊
  • 🙂
  • 🙃
  • 😌
  • 😍
  • 😘
  • 😜
  • 😝
  • 😏
  • 😒
  • 🙄
  • 😳
  • 😡
  • 😔
  • 😫
  • 😱
  • 😭
  • 💩
  • 👻
  • 🙌
  • 🖕
  • 👍
  • 👫
  • 👬
  • 👭
  • 🌚
  • 🌝
  • 🙈
  • 💊
  • 😶
  • 🙏
  • 🍦
  • 🍉
  • 😣
  • 颜文字
  • Emoji
  • Bilibili
0 comments
No comment