where to put using namespace std;

Hikari Iwasaki picture Hikari Iwasaki · Jun 25, 2011 · Viewed 9.6k times · Source

I'm wondering where to put using namespace std;. I saw a code with the using namespace std; in the int main(){} but I was putting it after #include <iostream>. Where should I put it and does it make any difference where I put it?

Answer

Ed S. picture Ed S. · Jun 25, 2011

Adding it inside of a function restricts the scope of the using statement to that function only. You should never put a using statement inside of a header as to avoid conflicts for users of your header file(s).

Putting it above main in the file scope is fine if you know that no conflicts will arise, but even that may cause problems with other imported types and is generally to be avoided in moderately sized projects. I try to avoid pollution of the global namespace as much as possible, but if I am writing a one-off, small implementation file I will add a using namespace std; at the top for convenience.

In your case, assuming you only want to use std::cout and std::cin (just an example), you can do this:

using std::cout;
using std::cin;

Now you can write cin >> whatever and cout << whatever without fully qualifying the type/object each time and you also avoid polluting the global namespace.