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 first
second
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 auto
Schlüsselwort mit weniger Kampf als var
in 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)
x
und Sie nicht einmal wissen, was x
ist, sollten Sie diese Schleife nicht an erster Stelle schreiben
var
? Das habe ich vermisst.