2017-05-17 14 views
0

using namespace std;は問題があることを理解しています(例:"Why is using namespace std considered bad practice?"への回答を読むこと)。"using namespace std;"の良い代替手段は何ですか?

標準の名前空間をインポートするのに適した代替手段は何ですか?

私は自分のコードを改善するために何ができるかを知りたいと思います。

+0

ようこそスタックオーバーフロー!私は既存の良い答えが見つからない部分に集中するためにあなたの質問に[編集]しました。それはかなり抜本的な編集ですが、私はそれが再開され、有用であることができる質問をすると思います。 –

答えて

1

代わりにstd::をどこにでも書くことです。それは名前の衝突のために、そしてそれが不明であるために悩まされています。 vectorと書いておけば、数学の3dベクトルや標準ライブラリのベクターなどを使用しているかどうかはすぐにわかりません。もしあなたがstd::vectorと書いたらそれは明らかです。 using namespace stdの場合、vectorvectorという自分の3D計算クラスと衝突する可能性があります。

+0

ほとんど唯一の.. –

2

グローバルスコープでusing namespace std;を持つグローバル一つにstd名前空間からすべてに持ち込むの主な選択肢は以下のとおりです。あなただけが必要な実際の名前に持ち込む

  1. 。たとえば、vectorusing std::vector;としてください。

  2. 名前を使用するときは、常に明示的な名前空間の資格を使用してください。たとえばstd::vector<int> v;について

  3. すべての名前に持ってきたが、減少範囲内(唯一の関数内のような)(ヘッダで、これはほとんどの場合、あなたが唯一のものであるべき)。たとえばvoid f() { using namespace std; vector<int> v; } - これはグローバルな名前空間を汚染しません。

関連する問題