Was sind die Vor- / Nachteile der auto Schlüsselworts, insbesondere bei for-Schleifen?
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->??
}
Wenn Sie nicht wissen, ob Sie einen Iterator für eine Karte oder einen Vektor haben, würden Sie wahrscheinlich nicht wissen, ob Sie ihn verwenden sollen firstsecond Eigenschaften des Objekts oder direkt darauf zugreifen sollen, nein?
Dies erinnert mich an die C # -Debatte über die Verwendung des Schlüsselworts var. Der Eindruck, den ich bisher habe, ist, dass die Leute in der C ++ - Welt bereit sind, das autoSchlüsselwort mit weniger Kampf als varin der C # -Welt zu übernehmen. Für mich ist mein erster Instinkt, dass ich gerne den Typ der Variablen kenne, damit ich weiß, welche Operationen ich erwarten kann, um sie auszuführen.
for (auto& it : x)(oder ohne Hinweis, wenn Sie kopieren möchten)
xund Sie nicht einmal wissen, was xist, sollten Sie diese Schleife nicht an erster Stelle schreiben
var? Das habe ich vermisst.