I am starting out with C++ and almost everywhere I see there is these 2 sentences at the top.

```
#include <iostream>
using namespace std;

```

As I understand namespaces are something to keep names separate and have same identifiers in different namespaces. So isn't including `std` in the beginning undoing all the hard work of creating namespaces? Isn't it better to have something like `std::cout` when I need a certain function from a particular namespace?

Would including the namespace in the particular function that uses it a good tradeoff between less typing (`std::cout` vs. `cout` everywhere) and avoiding the name conflicts(abc in foo and abc in bar avoided using `foo::abc` and `bar::abc`)? Something like

```
int function_using_abc_namespace(int a)
{
    using namespace abc;
    //Rest of the function
}

```

I wanted to know because avoiding name conflicts is necessary but avoiding more typing is also important. If this isn't good way to get a middle ground then what are the alternatives?