Avatar ·

Iteration über std::vector: unsigned vs signed Index – was wählen?

Hallo zusammen! Ich habe vor kurzem angefangen, C++ zu lernen, und bin auf ein Problem bei der Iteration über `std::vector` gestoßen. Wenn ich eine Schleife schreibe, verwende ich normalerweise `int i`, aber der Compiler (GCC) gibt eine Warnung über den Vergleich von signed und unsigned aus. Hier ist ein Beispiel: ```cpp #include #include int main() { std::vector vec = {1, 2, 3, 4, 5}; for (int i = 0; i < vec.size(); ++i) { // Warnung: Vergleich signed/unsigned std::cout << vec[i] << " "; } return 0; } ``` Warnung: `warning: comparison between signed and unsigned integer expressions [-Wsign-compare]`. Ich verstehe, dass `vec.size()` `size_t` (unsigned) zurückgibt, während `i` bei mir `int` (signed) ist. Wenn ich `int` in `size_t` oder `unsigned int` ändere, verschwindet die Warnung. Aber dann kann ich in Rückwärtsschleifen nicht `i >= 0` verwenden, weil `size_t` niemals negativ ist und die Schleife unendlich wird. Frage: Welchen Typ sollte man am besten für den Index bei der Iteration über einen Vektor verwenden? Soll