예전 자유 게시판

안녕하세요 ~ 궁금한게 있어서 하나 올립니다

송정헌 2011-03-25 18:03

이곳에 올려도 되는건지 모르겠네요

C++ 표준 라이브러리 확장 튜토리얼 및 레퍼런스 를 본 후 프로젝트를 진행하다가

다음과 같은 코드를 만들어 내고 싶어서 해보고 있는데요 좀.... 막혀서 질문을 남겨놓습니다

하고 싶은건 tuple2 의 첫번째 인자와 같은 것을 _containerTy 에서 찾아서 해당

iterator 를 반환 하는 것인데요

함수 안에서 찾는 구문인

std::find_if(container.begin(),container.end(),std::tr1::bind(std::equal_to<std::tr1::tuple_element<0,firstType>(),std::tr1::placeholders::_1,tempVal ));

의 구문은 제대로 작동하는 걸 확인 했는데요

이걸 검색해서 해당 _containerTy::iterator 를 반환 하려고

할때 vecTuple2::iterator  대신에 _containerTy::iterator 와 같은 방법으로 반환 값을 넘겨줄 순

없는 걸까요? 가능한건지 가능하다면 어떻게 하면 되는건지 잘 모르겠습니다.


예상으론 _containerTy::value_type::iterator 로 하면 되지 않을가 싶은데.. 에러가 나는것 같더군요

답변좀 부탁 드리겠습니다 꾸뻑~


///////////////////////////////////////////////////////

typedef std::tr1::tuple<CPoint,int> tuple2;
typedef std::vector<tuple2 > vecTuple2;

///////////////////////////////////////////////////////

template<typename _containerTy,typename Ty>
vecTuple2::iterator find_if_equal_to_FirstArg(_containerTy& container,Ty& arg0)
{
        typedef typename::_containerTy::value_type>::type firstType;
        firstType tempVal(arg0,ignore);
        return std::find_if(container.begin(),container.end(),std::tr1::bind(std::equal_to<std::tr1::tuple_element<0,firstType>(),std::tr1::placeholders::_1,tempVal ));
}


////////////////////////////////////////////////////////////////////////////////

아래 소스는 제가 시도해서 에러가 나는 코드입니다

////////////////////////////////////////////////////////////////////////////////


template<typename _containerTy,typename Ty>
vecTuple2::iterator find_if_equal_to_SecondArg(_containerTy& container,Ty& arg1)
{
        typedef _containerTy::value_type secondType;
        secondType testttt = secondType(CPoint(0,0),arg1);

        return std::find_if(container.begin(),container.end(),std::tr1::bind(std::equal_to<std::tr1::tuple_element<1,secondType>(),std::tr1::placeholders::_2,testttt ));
}

이 함수를 호출하는 호출부는 이러합니다

int NoneTileType = 0;
find_if_equal_to_SecondArg( mpMakeTileRange->mRange, NoneTileType );


류광 2011-03-25 22:03


일단은 코드를 정리해서 구문 오류부터 없애 주시면 한 번 살펴 보겠습니다.. 예를 들어 <, >가 짝이 맞지 않는 부분들이 있네요.