int main(int argc, char* argv[]) { std::vector<int> ints = {1, 2, 3, 4, 5}; std::vector<std::string> words = {"one", "two", "three", "four", "five"}; std::vector<std::string> romans = {"I", "II", "III", "IV", "V"}; enum { INTS, WORDS, ROMANS }; auto it_begin = make_zip_iterator(ints.begin(), words.begin(), romans.begin()); auto it_end = make_zip_iterator(ints.end(), words.end(), romans.end()); for (; it_begin != it_end; ++it_begin) { std::cout << it_begin.Get<INTS>() << " " << it_begin.Get<WORDS>() << " " << it_begin.Get<ROMANS>() << std::endl; } }
inline OutputIterator transform(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, OutputIterator result, BinaryOperator op, command_queue &queue = system::default_queue()) { typedef typename std::iterator_traits<InputIterator1>::difference_type difference_type; difference_type n = std::distance(first1, last1); return transform( make_zip_iterator(boost::make_tuple(first1, first2)), make_zip_iterator(boost::make_tuple(last1, first2 + n)), result, detail::unpack(op), queue ); }
void write( AlignedPtr ptr, Arg&& src ) { detail::write_zip_iterator( make_zip_iterator( make_layout_iterator<Layout>( ptr ), make_mapping_iterator<Mapping>( std::forward<Arg>( src ) ) ) ); }
NETSER_FORCE_INLINE auto write_inline( AlignedPtr ptr, Arg&& src ) { return detail::write_zip_iterator( make_zip_iterator( make_layout_iterator<Layout>( ptr ), make_mapping_iterator<Mapping>( std::forward<Arg>( src ) ) ) ); }
zipped_range( const ZI& beginIt, const ZI& endIt) : base( make_zip_iterator( beginIt ), make_zip_iterator( endIt ) ) {}