2017-01-13 3 views
-4

LinuxオペレーティングシステムのC++コード(std :: mapの代わりにcout、std :: map <>の代わりに<>など)でstd ::なしのステートメントを使用したいと考えています。それを実行するためにはどのヘッダが必要ですか?プレフィックスstd ::をLinuxのC++コードに残すには、どのヘッダを含めるべきですか?

+3

'using namespace std;'とにかく、http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice – Danh

+1

いいえ、ヘッダーではありません。いいえ、OSに依存しません。 –

+2

同じヘッダーを使用しますが、コードの先頭に 'using namespace std;'と書いてください。 [**しかし、これは悪いアイデアです**](http://stackoverflow.com/q/1452721/1171191)。それをしないでください。 – BoBTFish

答えて

7

コメンターが指摘したように:何はありませんこれを行うにはが含まれ、あなただけがをusing namespace statement

#include <iostream> // cout 
#include <map> // map 

using namespace std; // bring this entire namespace into scope 

を書き、その後通常どおりにファイルをインクルードする必要があり、かつ、あなたは注意する必要があり、コメント者は、特にヘッダファイルthis is a terrible ideaを指摘しています。あなたが書く必要がある余分な少数のキャラクターのために、あなたは後で何時間もトラブルを救うことができます。あなたが書き込みstd::に対して真になら、これはOSに依存しない

{ 
    // lots of console printing: 
    using std::cout; 
    cout << ""; 
    ... 
} 
// Now you'd need to write std::cout again 

にあなたがこれを行う範囲を制限することを検討して(Linux用のソリューションは、他のオペレーティングシステムでも同じです)

+0

正確に言うと、ヘッダーファイル内のグローバルスコープまたは名前空間のスコープではひどい考えです。ヘッダファイル内のインライン関数の定義の中で受け入れられる(IMO)ことができます。 –

2

それは本当にありません一部のヘッダーを含めて using namespace statementを使用して明示的な名前空間を省略することができます。
あなたは省略したい場合は、通常の#includeの後

using namespace std; 

を、しかし:(本当に:本当に良い習慣ではないかもしれないグローバル名前空間、にすべてのstd ::名前空間の項目をもたらす)は、使用することができますstd stuffを参照するコードの前に

+1

* "これは本当に良い習慣ではないかもしれない" *はかなり控えめです。 –

2

デフォルトの名前空間に持ち込みたいクラスがある場合は、usingでエイリアスできます。たとえば:

using std::cout; 

あなたはusing namespaceで全体の名前空間をインポートすることはできますが、最初に読んで理解「Why is using namespace std considered bad practice?」したいと思うでしょう。

関連する問題