강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

김우진님의 프로필 이미지
김우진

작성한 질문수

강의교재 p38 find값 반환

작성

·

145

0

cout << it << '\n';

해당페이지를 보시면 이러한 코드가 있는데요! find라는 함수는 위치를 반환한다고 했는데 왜 코드 실행결과 0이 나오는것인가요? 제가 추측하건데 love가 인덱스로 0 is 가 1 이런식으로 정의가 되는건가요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

김우진님, find 함수는 일반적으로 지정한 값을 배열이나 컨테이너에서 찾아 그 위치를 가리키는 반복자(iteratror)를 반환합니다. C++의 std::find 함수에 대한 의문을 제기하셨는데, 해당 함수는 찾은 요소를 가리키는 반복자를 반환하며, 요소를 찾지 못했을 경우 컨테이너의 end()를 가리키는 반복자를 반환합니다.

cout << it << '\n'; 코드는 find 함수로부터 반환된 반복자를 출력하는 코드입니다. 만약 it이 컨테이너의 시작점을 가리키는 반복자라면 0 같은 값을 출력할 수 있지만, 이는 반복자가 가리키는 실제 주소값과 다를 수 있습니다. it이 가리키는 실제 요소를 출력하려면 *it과 같이 역참조 연산자를 사용해야 합니다.

예를 들어, std::vector<int> vec = {1,2,3};과 같은 벡터가 있고, find(vec.begin(), vec.end(), 1)을 실행했다면, itvec의 첫 번째 요소를 가리키는 반복자를 반환할 것입니다. 그리고 cout << *it << '\n';를 통해 첫 번째 요소인 1을 출력할 수 있습니다.

만일 코드 실행 결과가 0이 나오고 있다면, 아마도 반복자가 가리키는 요소가 컨테이너의 실제 시작 위치(예: vector[0])인 경우이거나 출력이 반복자의 주소 값 또는 잘못된 값이 출력되고 있는 경우일 수 있습니다. 정확한 이유를 알기 위해서는 코드의 전체적인 context와 it이 어떻게 정의되었는지를 봐야 할 것 같습니다.

답변이 충분하지 않다면, 문제가 되고 있는 코드의 전체적인 부분을 포함해서 추가적인 질문을 해주시면 좀 더 구체적으로 도와드릴 수 있을 것 같습니다.

김우진님의 프로필 이미지
김우진

작성한 질문수

질문하기