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