템플릿 튜플: 각 요소에 함수 호출
다양한 유형의 벡터로 구성된 템플릿 튜플 내에서 특정 작업을 수행해야 하는 경우가 종종 발생합니다. 각 벡터 요소에 대한 연산을 수행합니다.
질문:
템플릿 튜플 내의 각 요소에 대해 함수를 어떻게 호출하여 "각각에 대해"와 같은 작업을 실행할 수 있습니까? (N): do_something_to_vec
답변:
C 메타 프로그래밍 기술과 함수 템플릿의 조합을 사용하면 우아한 솔루션을 제공합니다.
함수 템플릿: 다음 함수 템플릿을 활용하세요.
제공된 TupleOfVectors 템플릿의 컨텍스트에서 do_something_to_each_vec 메서드는 다음을 수행할 수 있습니다. 다음과 같이 구현됩니다:
<code class="cpp">template<typename... Ts> struct TupleOfVectors { std::tuple<std::vector<Ts>...> t; void do_something_to_each_vec() { for_each_in_tuple(t, tuple_vector_functor()); } struct tuple_vector_functor { template<typename T> void operator () (T const &v) { // Perform desired operations on the argument vector... } }; };</code>
C 14 이상을 사용할 수 있는 경우 for_each_in_tuple 함수 std::integer_sequence를 사용하도록 업데이트할 수 있습니다.
C 17 이상에서는 간결한 구문이 존재합니다.
<code class="cpp">std::apply([](auto ...x){std::make_tuple(some_function(x)...);} , the_tuple);</code>
이러한 솔루션은 명시적인 루프나 인덱스 없이 템플릿 튜플 내의 각 요소에 대해 작업을 수행할 수 있는 유연하고 효율적인 방법을 제공합니다.
위 내용은 \'각 (N): do_something_to_vec()\'과 같은 작업을 효과적으로 수행하기 위해 벡터 템플릿 튜플 내의 각 요소에 함수를 적용하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!