2012-02-11 10 views
1

私はUbuntuの11.04でNetBeans 7.1を使用していたにもかかわらずC++は: '設定' と 'ベクトル'「宣言されていないの#include文

次の呼び出しを

set<Triangle> V; 

は、エラーメッセージを表示します

error: ‘set’ was not declared in this scope 

以降のお電話

vector<Triangle> ans; 

は私がC++ファイルの先頭に

#include <vector> 
#include <set> 
#include <map> 

を持つにもかかわらず、エラーメッセージ

error: ‘vector’ was not declared in this scope 

これを提供します。

この問題を解決するには、これが非常に高く評価されます。
ピーター。

+2

名前空間を使用していますか? – Dani

答えて

3

あなたが名前空間std忘れ:

のstd ::トライアングル> V <を設定します。 std :: vector < Triangle> V;

2

これらはstd名前空間に存在します。したがって、タイプを完全に品質化するか(std::vector)、usingステートメント(using namespace std;)を使用してください。

後者のオプションは、グローバル名前空間を汚染します。ヘッダーファイルでそれをしないでください。そうでなければ、ヘッダーをインクルードしたときに名前空間全体がインポートされ、衝突を起こさないことが分かっている場合は実装ファイルでのみ行います。

#include <vector> 

int main(...) { 
    vector v;  // no worky 
    std::vector v; // ok! 
} 
6

ベクトルセットとマップあなたが

std::vector<Triangle> ans; 

やインクルードが文を含める後

using namespace std; 

を追加して、ベクター/セット/マップを呼び出す必要がありますので、C++標準ライブラリの一部です。

+1

'namespace std'はSTLの一部ではありません。しかし、これはC++標準ライブラリの一部です。 –

+0

Oh Wo​​opsy。ありがとう、私はちょうど目を覚まし、脳は怒った。編集します。 –

+0

名前空間stdを使って追加しました。 includeステートメントの後の それはそれを修正したようです。 – OtagoHarbour

関連する問題