2012-02-11 2 views
1

내가 우분투 11.04에 넷빈즈 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 네임 스페이스에 대해 잊었 :

표준 : 설정 < 트라이앵글> V; std :: vector < 삼각형> V;

2

이들은 std 네임 스페이스에 있습니다. 그러므로 유형을 완전히 (std::vector) 또는 using 진술 문 (using namespace std;)으로 지정하십시오.

후자의 옵션은 글로벌 네임 스페이스를 오염시킵니다. 헤더 파일에서 그렇게하지 마십시오. (그렇지 않으면 헤더를 포함 할 때 전체 네임 스페이스를 가져 오게됩니다.) 충돌을 일으키지 않는다는 것을 알고 있다면 구현 파일에서만 수행하십시오. 당신이

std::vector<Triangle> ans; 

와 벡터/설정 /지도 문의하거나 include 문을 후

using namespace std; 

를 추가 할 필요가 있으므로

#include <vector> 

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

벡터 세트 및 맵은 C++ 표준 라이브러리의 일부입니다.

+1

'namespace std'는 STL의 일부가 아닙니다. 그러나 이것은 C++ 표준 라이브러리의 일부입니다. –

+0

Oh Woopsy. 고마워, 나는 방금 일어 났고 두뇌는 방귀 뀌었다. 편집 할 것입니다. –

+0

네임 스페이스 std를 사용하여 추가했습니다. include 문 다음에 그걸 수정 한 것 같습니다. – OtagoHarbour