1 #ifndef P2P_INDEXED_HPP_INCLUDED
2 #define P2P_INDEXED_HPP_INCLUDED
15 template <
class Operator,
class TestIt,
class TrialIt>
20 typedef typename std::decay<Operator>::type operator_t;
21 typedef TestIt test_iterator_t;
22 typedef TrialIt trial_iterator_t;
24 typedef size_t test_input_t;
25 typedef size_t trial_input_t;
26 typedef typename operator_t::result_t result_t;
31 p2p_indexed(Operator &&op, TestIt test_begin, TestIt test_end,
32 TrialIt trial_begin, TrialIt trial_end)
33 : m_op(std::forward<Operator>(op))
34 , m_test_begin(test_begin)
35 , m_test_end(test_end)
36 , m_trial_begin(trial_begin)
37 , m_trial_end(trial_end)
41 result_t operator()(
size_t test_idx,
size_t trial_idx)
const
43 return m_op(m_test_begin[test_idx], m_trial_begin[trial_idx]);
46 size_t num_rec()
const
48 return m_test_end - m_test_begin;
51 size_t num_src()
const
53 return m_trial_end - m_trial_begin;
58 test_iterator_t m_test_begin;
59 test_iterator_t m_test_end;
60 trial_iterator_t m_trial_begin;
61 trial_iterator_t m_trial_end;
64 template <
class Operator,
class TestIt,
class TrialIt>
69 template <
class Operator,
class TestIt,
class TrialIt>
70 auto create_p2p_indexed(Operator &&op, TestIt test_begin, TestIt test_end,
71 TrialIt trial_begin, TrialIt trial_end)
74 std::forward<Operator>(op),
76 trial_begin, trial_end);
82 #endif // P2P_INDEXED_HPP_INCLUDED