함수 객체중에 find_if라는 뭐시기가 있지요.
책을 보면 . find_if의 세번째 인수는 ()연사자를 오버로딩하는 함수객체이며 요소값 하나를 인수로 전달받아 이 값이 원하는 조건이 맞는지 검사하여 BOOL형을 리턴한다. 찾은 조건에 맞으면 true를 리턴하고 아니면 false를 리턴할 것이다.

라고 나와 있습니다.
제 생각으로 이해를 하자면  


struct IsMulti3 : public unary_function<int,bool> { ///일단 이 부분은 상관하지 마시고.
     bool operator()(int a) const {
          return (a % 3 == 0);
     }
};

void main()
{
     int ari[]={1,2,3,4,5,6,7,8,9,10};
     vector<int> vi(&ari[0],&ari[10]);

     vector<int>::iterator it;    ///////벡터로 선언이 되어서 10개의 장소에 각각 숫자가 들어가 있겠죠? it는 지시자이고요.
     for (it= vi.begin();;it++) { /////처음부터 지시자를 증가시키면서 순회합니다.
          it=find_if(it, vi.end(), IsMulti3());  //////find_if가 나왔네요. 처음부터 끝가지 검색을 하는ep IsMulti()객체로 처리 합니다. 그런데 여기서 궁금한 점 하나가 맞으면 true를 리턴하니까 지시자인 it가 받는게 살짝 이상하단 말이죠. ....혹시 IsMulti3()의 객체가 true를 리턴하면 it지시자가 그것을 가리키는 것인가요? true가 반환이 되었으므로 it는 그 쪽 주소를 가리킨다. 라는 형태가 되는 듯한데 확실한지 모르겠군요.
          if (it== vi.end()) break; ///이것도 넘어가고

          cout << *it << "이(가) 있다" << endl; ///      
    }
}

질문의 요지는 "find_if에서 IsMulti3가 true일때만 it가 그 값을 가리키게 되므로" <---이게 정확한지 궁금합니다.-사실 질문을 작성하면서 떠오른 것임.3의배수만 출력이 된다. 라는 의미인지 궁금합니다