Por que não se deve escrever `using namespace std;` em C++ e quais são as alternativas?
Olá! Comecei a estudar C++ e em todas as aulas e exemplos de código vejo constantemente a linha `using namespace std;`. Estou acostumado a sempre escrevê-la no início do programa, porque sem ela tenho que adicionar `std::` em toda parte, o que parece inconveniente. Por exemplo:
```cpp
#include
#include
#include
using namespace std;
int main() {
vector numbers = {5, 2, 8, 1, 9};
sort(numbers.begin(), numbers.end());
cout << "Ordenado: ";
for (int n : numbers) {
cout << n << " ";
}
cout << endl;
return 0;
}
```
Mas recentemente li que programadores experientes aconselham nunca usar `using namespace std;` em projetos reais. Supostamente, isso pode levar a erros difíceis de detectar. Tentei escrever o código sem essa diretiva, e ele ficou verboso:
```cpp
std::vector numbers = {5, 2, 8, 1, 9};
std::sort(numbers.begin(), numbers.end());
std::cout << "Ordenado: ";
```
Acho que a legibilidade do código pior