视频加载失败

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

关于 auto,你需要知道的一切
555 字
3 分钟
关于 auto,你需要知道的一切

话说咱写 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();

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

咱还能这么玩:

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(105×10510^5 \times 10^5)的数据。但只是传言!现在还没有那么快!老老实实把代码时间复杂度降下来吧)……~~根据@_trailblazer的指证和常理推断,auto在编译期间就会判断类型,对运行速度没有影响。

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

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

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

    Python :我咋可以呢?

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

    评测组件:Compile Error!

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

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

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

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

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

重要的事情说三遍。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
关于 auto,你需要知道的一切
https://www.leo2011.eu.org/posts/auto/
作者
Block_Fish
发布于
2023-09-24
许可协议
SATA

评论区

Profile Image of the Author
Block_Fish
大胆假设,小心求证。——胡适
公告
网站全面重构,有问题欢迎联系积木鱼!
分类
标签
最新动态
站点统计
文章
56
分类
7
标签
17
总字数
84,805
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Netlify CI
博客版本
Firefly v6.16.8
文章许可
SATA

当前页面没有目录

文章目录

当前页面没有目录