std
読み:エスティーディー
外語:std

 標準C++ライブラリの所属する名前空間
目次

概要
 std名前空間は、標準C++ライブラリ全体が所属する名前空間である。
 C++標準では、C/C++の標準的なヘッダーファイルで定義されるもののほぼ全てが含まれる名前空間であり、このため非常に広大である。
 このように広大に設計しすぎたstdはC++の設計ミスの一つである。しかもC++では、この広大な名前空間を僅か1行でグローバルにすることができる秘術が存在する。

特徴

広大な名前空間
 名前空間は理想的には、機能ごとに分割することが望ましく、そうすることで自然と名前空間は小さくなるため名前衝突の確率も下がなど利点もある。
 しかしC++標準では、理由は不明だが全ての標準をたった一つの名前空間stdに押し込むという方法を選択した。理由は定かではない。

using namespace std;
 プログラムの先頭に書いておくことで、std名前空間のものをグローバルと同様に扱うことができるという秘術である。
 ただでさえ巨大な名前空間であり悪評も高く設計ミスとまで罵られるstd名前空間をグローバル化するのは、望ましいことではない。
 このように無造作にusing宣言をするよりは、必要なシンボルを一つずつusing指令する方が思わぬ悪影響を避けることができたり、どのシンボルを必要としているのかをプログラム内に記載することにもなることから、安全性やメンテナンス性を高めることになる。

再検索