とりあえず以下のように回答いたします。わからないところがありましたら、補足などで再質問してください。
【 namespace とは?】
プログラム要素(関数,クラス,・・・)をパッケージ化するためのメカニズムです。日本語には「名前空間」と訳されています。
例えば、名前としてこの OKWeb /教えて! goo のカテゴリーを参考にすると、次のようになります。
namespace education {
class economy;
void literature();
}
namespace society {
class economy;
double energy ();
}
すると、名前は上から順に、
education::economy
education::literature
society::economy
society::energy
になります。
効用としては、名前の衝突が避けられます。たとえば、
education::economy
society::economy
は全く別のものてす。
【 std とは?】
C++ 標準ライブラリ用の名前空間名です。
例えば、文字列を扱うクラスは、std::string, 標準出力ストリーム(ここに出力の操作をすると、標準出力装置に出力される)は std::cout という名前です。
【 using とは?】
名前空間を使うと、正式な名前は長くなり、プログラムの読みやすさを損なうことがあります。これを避けるために、using 宣言と using ディレクティブがあります。
using 宣言をすると、それ以後そのスコープでは名前空間名を省略することができます。例えば、using 宣言がなければ、
std::string str;
std::cout << "Hellow, world! << std::endl;
と書かなければ、標準準拠のコンパイラではエラーになりますが、( endl を実行すると、改行してフラッシュする)
(A)using std::string
(A)using std::cout
(A)using std::endl
と宣言すると、std:: を省略して、
(B)string str;
(B)cout << "Hellow, world! << endl;
と使えるようになります。
using ディレクティブを使うと、その名前空間のプログラム要素は、全て名前空間名を省略することができるようになります。例えば、
using namespace std;
と宣言すると、いちいち(A)を全て書かなくても(B)が書ける(コンパイル・エラーにならない)ようになります。
using ディレクティブを使うと名前が衝突する可能性が増えるので、新たにコーディングする場合は使うべきではないそうです。名前空間がなかった昔の C++ のソースを標準準拠のコンパイラにかけるときなどに、限定して使うことが推奨されています。
以上の説明は、概略のものです。特に、名前空間名をいつ省略できるか、省略した場合どのように解釈されるかについては注意が必要です。
お礼
動きました <iostream> は使えるようです おっしゃる通りです 省略名にすると <iostream> で確かにとするとエラーがでます しかし <iostream.h> とするとエラーがでません これからは<iostream.h>を使うのは良くないことで <iostream>を使うのが正式となるのでしょうか? よろしくお願いします