The explicit inclusion of namespace “std” in the reference std::cout works whether or not “using namespace std” has been declared earlier the program file.
The full-name approach has the advantage of providing an explicit dependency at the point of use. It also confines dependencies on other (library) material to those stated explicitly. It also avoids possible name conflicts with a name introduced in the program (or another used namespace) that is spelled the same. These are all anticipatory precautions and it is not expected that we would know about all of that as beginners.
The disadvantage is that it makes references into (undeclared) namespaces wordier and there is the risk of more typing mistakes that have to be fixed.
[begin soapbox]
I’m one of those fussy people who likes to keep dependencies explicit and visible in the code. I have the luxury, and the experience, of doing that. (I imagine there are tools that one could write or obtain to identify dependencies from inspection of the source code. That notion can become its own punishment.)
The trend is to have more and more automation behind the scenes (such as what that #include “stdafx.h” is all about). What we might keep our eye out for is the degree that has new developers miss being exposed to and in touch with what is actually going on. I worry that this impedes developing confidence around what is essential versus inessential over time. That also might lead one to become tied to a single toolcraft (e.g., using Visual Studio and not knowing how to function without it; being unequipped to enter a community that favors a different toolcraft).
To be clear, this is not an indictment of Visual Studio or the Microsoft approach to developer tools. I have seen these same difficulties on open-source projects where the heavy reliance on various (custom) tools makes the on-ramp for newcomers near-insurmountable.
[end soapbox]