名前空間は、その内部にある識別子 (型、関数、変数などの名前) のスコープを定める宣言領域です。 名前空間は、コードを論理グループにまとめるため、およびコード ベースに複数のライブラリが含まれる場合に特に発生する名前の競合を回避するために使用されます。 名前空間スコープのすべての識別子は互いどうしを修飾なしで参照できます。 名前空間の外の識別子がメンバーにアクセスするときには、識別子ごとに完全修飾名を使用するか (std::vector<std::string> vec; など)、単一の識別子のために using 宣言を使用するか (using std::string)、名前空間内のすべての識別子のために using ディレクティブを使用する (using namespace std;) ことができます。 ヘッダー ファイル内のコードは、常に完全修飾された名前空間の名前を使用する必要があり