예전 자유 게시판
안녕하세요 ~ 궁금한게 있어서 하나 올립니다
송정헌 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
일단은 코드를 정리해서 구문 오류부터 없애 주시면 한 번 살펴 보겠습니다.. 예를 들어 <, >가 짝이 맞지 않는 부분들이 있네요.
- 답글: