Verwenden des auto-in-Schleifen in c++

Ich eine Warnung erhalten signed/unsigned mismatch für den folgenden code:

auto n = a.size();
for (auto i = 0; i < n; i++) {
}

Das problem ist, dass durch die Zuordnung von 0 bis i es wird int eher als size_t.
Also, was ist besser:

size_t n = a.size();
for (size_t i = 0; i < n; i++) {
}

oder so:

auto n = a.size();
for (size_t i = 0; i < n; i++) {
}

oder haben Sie vielleicht eine bessere Lösung? Ich mag die erste mehr, weil
es ist etwas mehr im Einklang, es benutzt nur size_t anstatt beide size_t und auto
für den gleichen Zweck.

  • wie wäre auto i = 0u?
  • Wie wäre es mit einem int-wenn Sie einen index in der Schleife? Mit einem unsigned index kann man böse sehr schnell. E. g. i < n - 1 ist falsch, wenn i und n sind unsigniert.
InformationsquelleAutor user2381422 | 2013-07-06
Schreibe einen Kommentar