A namespace is a scope in which declarations and definitions are grouped together. In order to refer to any of these from another scope, a full qualified name is required. However, repeating the full qualified name over and over again is tedious, error prone and less readable. Instead, a using declaration or a using directive can be used.
A using declaration is a sequence consisting of the keyword using followed by a namespace:: member. It instructs the compiler to locate every occurrence of a certain declaration (type, operator, function, etc.) in the specified namespace, as if the full qualified name were supplied:
#include //STL vector; belongs to namespace stdvoid main() { using std::vector; //using declaration; every occurrence of vector is looked up in std vector vi; //without a using declaration, a full qualified name: std::vector would be required //... }//end of main; the above using declaration goes out of scope here
A using directive instructs the compiler to recognize all members of a namespace and not just one. It consists of the following sequence: ‘using namespace’ followed by a namespace-name. For example:
#include //STL vector; belong to namespace std#include //iostream classes and operators are also in namespace stdvoid main() { using namespace std; //directive; all and declarations now accessible vector vi; vi.push_back(10); cout<