使用auto
关键字的利弊是什么,尤其是在for循环中?
for(std::vector<T>::iterator it = x.begin(); it != x.end(); it++ )
{
it->something();
}
for(std::map<T>::iterator it = x.begin(); it != x.end(); it++ )
{
it->second->something();
}
for(auto it = x.begin(); it != x.end(); it++ )
{
it->??
}
似乎,如果您不知道是否有地图或矢量的迭代器,就不会使用first
还是second
直接访问对象的属性,是吗?
这让我想起了C#关于是否使用关键字的争论var
。到目前为止,我得到的印象是,在C ++世界中,人们auto
比var
在C#世界中更愿意采用关键词。对我来说,我的第一个直觉是我想知道变量的类型,以便知道可以对它执行哪些操作。
for (auto& it : x)
(或不提,如果你想复制)
x
而您甚至都不知道是什么x
,就不应该首先编写该循环;-)
var
?我错过了。