Avatar ·

Iteração sobre std::vector: índice unsigned vs signed — qual escolher?

Olá a todos! Recentemente comecei a estudar C++ e me deparei com um problema ao iterar sobre `std::vector`. Quando escrevo um loop, geralmente uso `int i`, mas o compilador (GCC) emite um aviso sobre comparação entre signed e unsigned. Aqui está um exemplo: ```cpp #include #include int main() { std::vector vec = {1, 2, 3, 4, 5}; for (int i = 0; i < vec.size(); ++i) { // aviso: comparação signed/unsigned std::cout << vec[i] << " "; } return 0; } ``` Aviso: `warning: comparison between signed and unsigned integer expressions [-Wsign-compare]`. Eu entendo que `vec.size()` retorna `size_t` (unsigned), enquanto `i` é `int` (signed). Se eu mudar `int` para `size_t` ou `unsigned int`, o aviso desaparece. Mas então não posso usar `i >= 0` em loops reversos, porque `size_t` nunca é negativo, e o loop se torna infinito. Pergunta: qual tipo é melhor usar para o índice ao iterar sobre um vetor? Vale