C++ 11을 사용하지 않습니다. 그렇지 않으면 lambdas를 사용합니다.펑터를 연결/대기열로 만드는 방법은 무엇입니까?
입력 데이터 구조와 출력 데이터 구조에 대한 반복자가 있습니다. 입력 데이터에 대해 몇 가지 작업을 수행하고 그 결과를 출력에 저장하려고합니다. 시작 유형과 끝 유형은 다를 수 있습니다 (예 : int -> float).
나는 표준 알고리즘 후 제 기능을 모델링하기 위해 노력하고 다음 프로토 타입template<class INPUT_ITR, OUTPUT_ITR>
void f(INPUT_ITR in_it, INPUT_ITR in_it_end, OUTPUT_ITR out_it, ContextStuff)
기능은 상황에 따라 여러 가지 일을했다. 때로는 기능은 하나의 펑터를 사용해야하므로 코드의 라인이
transform(in_it, in_it_end, out_it, Functor1());
처럼 보인다하지만 가끔은 함수가 각 데이터 요소에 펑 시리즈를 사용하고 싶어. 변환에 사용할 단일 펑터로 펑터 체인을 만들 수있는 방법이 있습니까? 체인의 펑터는 컴파일 유형으로 알려집니다. 예에
transform(in_it, in_it_end, out_it, CHAIN(Functor1(), Functor2()));
수행합니다 Functor1 * 옵션
결과에 다음 Functor2 다음 점포 * 아웃.
솔루션의 unary_function에서 내 펑터를 상속 할 수 있습니다.
사용자 지정 펑터를 만드는 것이 더 나을지도 모릅니다. 정말 마음에 떠오르는 것이 없지만 Boost에는 몇 가지 트릭이있을 것입니다. – chris
C++ 11 없이는 functor의 협조없이 functor의 결과 타입을 얻을 수 없습니다 (일반적으로'result_type'). 그래서 이것을 원한다면 모든 펑터는'result_type' typedef를 가져야합니다. – Fozi
@Fozi 솔루션에 대한 unary_function에서 내 펑터를 상속받을 수 있습니다. –