작성
·
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)
을 실행했다면, it
은 vec
의 첫 번째 요소를 가리키는 반복자를 반환할 것입니다. 그리고 cout << *it << '\n';
를 통해 첫 번째 요소인 1
을 출력할 수 있습니다.
만일 코드 실행 결과가 0이 나오고 있다면, 아마도 반복자가 가리키는 요소가 컨테이너의 실제 시작 위치(예: vector[0]
)인 경우이거나 출력이 반복자의 주소 값 또는 잘못된 값이 출력되고 있는 경우일 수 있습니다. 정확한 이유를 알기 위해서는 코드의 전체적인 context와 it
이 어떻게 정의되었는지를 봐야 할 것 같습니다.
답변이 충분하지 않다면, 문제가 되고 있는 코드의 전체적인 부분을 포함해서 추가적인 질문을 해주시면 좀 더 구체적으로 도와드릴 수 있을 것 같습니다.