2014-03-13 5 views
-1

저는이 장을 제 책에서 만났습니다. find()가 어떻게 작동하는지 이해하지 못합니다. find() 함수가 작동하는 방식을 확인하는 간단한 함수를 만들려고했지만 코드에서 많은 오류가 발생했습니다.세트와 함께 find() 함수를 사용합니다.

#include <iostream> 
#include <set> 

using namespace std; 

int main() 
{ 

set<int> setA(1,2); 


int item; 
cout << "Enter a number: "; 
cin >> item; 

int setIter; 
setIter = setA.find(item); 
if (setIter != setA.end()) 
{ 
    cout << "It's in the list." << endl; 
} 

return 0; 
} 
+0

setA (1,2)를 사용하여 집합을 초기화 할 수 없습니다. 두 개의 매개 변수를 사용하는 생성자는 비교 자와 할당자를 사용합니다. 'set setA = {1,2};'를 시도해보십시오. 새로운 C++ 컴파일러를 사용하지 않고 insert()를 호출해야 할 경우 작동하지 않을 수도 있습니다. –

답변

1

여기

#include <iostream> 
#include <set> 

using namespace std; 

int main() 
{ 
    set<int> setA; 
    setA.insert(1);     // use insert function 
    setA.insert(2); 
    set<int>::iterator setIter; // take set iterator 

    int item; 
    cout << "Enter a number: "; 
    cin >> item; 

    setIter = setA.find(item); 
    if (setIter != setA.end()) 
    { 
     cout << "It's in the list." << endl; 
    } 

    return 0; 
} 

당신은 당신의 프로그램에서 두 가지 실수를하고 있습니다 ... 프로그램의 올바른 구현입니다. 먼저 set의 insert 함수를 사용해야하므로 작동하지 않는 생성자를 사용하여 set을 초기화하고 있습니다. 둘째로 iterator를 올바른 int가 아닌 int로 가져옵니다. 반복자는 기본적으로 집합 타입의 포인터입니다. 따라서 집합의 반복자를 가져와야합니다

+0

물론. 이것은 이제 의미가 있습니다. – user2105982

관련 문제