MCPcopy Create free account
hub / github.com/boostorg/compute / is_permutation

Function is_permutation

include/boost/compute/algorithm/is_permutation.hpp:44–68  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

42/// Space complexity: \Omega(distance(\p first1, \p last1) + distance(\p first2, \p last2))
43template<class InputIterator1, class InputIterator2>
44inline bool is_permutation(InputIterator1 first1,
45 InputIterator1 last1,
46 InputIterator2 first2,
47 InputIterator2 last2,
48 command_queue &queue = system::default_queue())
49{
50 BOOST_STATIC_ASSERT(is_device_iterator<InputIterator1>::value);
51 BOOST_STATIC_ASSERT(is_device_iterator<InputIterator2>::value);
52 typedef typename std::iterator_traits<InputIterator1>::value_type value_type1;
53 typedef typename std::iterator_traits<InputIterator2>::value_type value_type2;
54
55 size_t count1 = detail::iterator_range_size(first1, last1);
56 size_t count2 = detail::iterator_range_size(first2, last2);
57
58 if(count1 != count2) return false;
59
60 vector<value_type1> temp1(first1, last1, queue);
61 vector<value_type2> temp2(first2, last2, queue);
62
63 sort(temp1.begin(), temp1.end(), queue);
64 sort(temp2.begin(), temp2.end(), queue);
65
66 return equal(temp1.begin(), temp1.end(),
67 temp2.begin(), queue);
68}
69
70} // end compute namespace
71} // end boost namespace

Callers 3

BOOST_AUTO_TEST_CASEFunction · 0.85
mainFunction · 0.85
mainFunction · 0.85

Calls 5

iterator_range_sizeFunction · 0.85
sortFunction · 0.85
equalFunction · 0.85
beginMethod · 0.45
endMethod · 0.45

Tested by 1

BOOST_AUTO_TEST_CASEFunction · 0.68