예제 #1
0
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;
  }
}
예제 #2
0
파일: transform.hpp 프로젝트: 2bbb/compute
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
           );
}
예제 #3
0
파일: write.hpp 프로젝트: decimad/netser
 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 ) ) ) );
 }
예제 #4
0
파일: write.hpp 프로젝트: decimad/netser
 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 ) ) {}