[C++] iterator 반환값을 모르겠습니다
글쓴이: kldpzone / 작성시간: 금, 2005/08/26 - 2:29오후
deque<int>::iterator atIt1 ; cout << "전 ->" << *atIt1 << endl; if ( *atIt1 > 0 ) { cout <<"널?"<< endl; } atIt1 = find(xM.at(0).begin(), xM.at(0).end(), 8); cout << "후 ->" << *atIt1 << endl;
STL을 써서 짜고 있는데 atIt1의 초기값을 모르겠습니다. 그냥 NULL을 넣을려고
deque<int>::iterator atIt1 = NULL;
라고 초기화 하고 싶어도 에러가 나고
맨 위의 코드에 find() 함수를 사용해서 못찾으면 어떤것을 반환하는지 궁금도 합니다.
Forums:
반복자는 포인터형을 일반화한 것이라서 그 구현에 따라서 다양한 형태로 나
반복자는 포인터형을 일반화한 것이라서 그 구현에 따라서 다양한 형태로 나타납니다. 단순한 NULL 대입으로는 불가능한 경우가 일반적이라고 생각하셔야 합니다.
굳이 반복자를 초기화하시겠다면 해당 객체의 begin() 정도로 초기화하시면 될 것 같습니다만, 위의 예처럼 find 의 리턴 값을 사용하실 것이라면 보통 end() 와 비교해서 같으면 찾는 것이 없다라고 판단하는 것이 일반적입니다.
헉... 왜 자동 로긴이 풀려버렸을까요? -_-;
헉... 왜 자동 로긴이 풀려버렸을까요? -_-;
STL에서 find 알고리즘에서 찾지 못했을 경우에 리턴 하는 itera
STL에서 find 알고리즘에서 찾지 못했을 경우에 리턴 하는 iterator는 find알고리즘의 두번째로 입력된 iterator를 리턴하도록 되어있습니다..
따라서 두번째 인자로 입력된 iterator가 end()이므로 찾지 못했을 경우에는 end() 함수가 리턴하는 iterator를 리턴할 것입니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
네, 답변 감사합니다.그런데 한가지[code:1] deque
네, 답변 감사합니다.
그런데 한가지
에서 sp에 값을 아무것도 넣지 않았을 경우.. 즉, push_back등을 전혀 하지 않았을때 find()를 쓰면 에러가 나네요.
아, 물론이죠;
아무 객체도 컨테이너에 포함되어 있지 않다면 .begin() 멤버 함수는 .end()와 같은 결과를 가져옵니다.
실제로 .end()가 호출하는 곳에는 아무 값도 없기 때문에, 에러가 발생하게 됩니다.
댓글 달기