关于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是普通的迭代器
}
不过需要注意几点:
-
auto 和 for 里用冒号的写法和 to_string 函数一样,都是C 艹 11的新特性,在Dev-C 艹中需要单独设置(否则直接炸裂)
-
比赛时采用 C 艹 14 标准,可放心使用
-
根据@_trailblazer的指证和常理推断,
auto在编译期间就会判断类型,对运行速度没有影响。 -
别尝试在不赋初值的情况下 auto 变量,否则大概是这个场景:
你:
auto arr[10086], x; // 应该是两个 int编译器:
这踏马谁知道arr这货是啥类型啊……这个x又是个啥???Python :
我咋可以呢?编译器:
废话你啥都能存进去……评测组件:
Compile Error!€€£ 砖家组:
唉,又一个爆0了的……到时候别怪我没提醒你啊……
auto初始化一定要赋初值!!!
auto初始化一定要赋初值!!!
auto初始化一定要赋初值!!!
重要的事情说三遍。

浙公网安备 33010602011771号