Como remover um elemento de std::vector por índice em C++?
Olá, colegas! Sou novo em C++ e encontrei um problema ao trabalhar com std::vector. Preciso remover um elemento pelo seu índice, mas não consigo encontrar a maneira correta.
Aqui está meu código:
```cpp
#include
#include
int main() {
std::vector numbers = {10, 20, 30, 40, 50};
int index_to_remove = 2; // Quero remover o elemento 30
// Tento usar erase, mas não sei como passar o índice
// numbers.erase(index_to_remove); // Erro de compilação
// Tento através de iterator
numbers.erase(numbers.begin() + index_to_remove);
for (int n : numbers) {
std::cout << n << " ";
}
// Espero: 10 20 40 50, mas o código trava ou se comporta de forma estranha
return 0;
}
```
Li a documentação, mas ainda estou confuso. Por que `erase` não aceita simplesmente um número? E é sempre necessário usar `begin() + index`? O que acontece se o índice estiver fora dos limites? Como lidar com erros corretamente? Ficarei grato por uma explicação detalhada com exemplos.