index_gen.hpp

来自「CGAL is a collaborative effort of severa」· HPP 代码 · 共 82 行

HPP
82
字号
// Copyright 2002 The Trustees of Indiana University.// Use, modification and distribution is subject to the Boost Software // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)//  Boost.MultiArray Library//  Authors: Ronald Garcia//           Jeremy Siek//           Andrew Lumsdaine//  See http://www.boost.org/libs/multi_array for documentation.#ifndef BOOST_INDEX_GEN_RG071801_HPP#define BOOST_INDEX_GEN_RG071801_HPP#include "boost/array.hpp"#include "boost/multi_array/index_range.hpp"#include "boost/multi_array/range_list.hpp"#include "boost/multi_array/types.hpp"#include <algorithm> #include <cstddef>namespace boost {namespace detail {namespace multi_array {template <int NumRanges, int NumDims>struct index_gen {private:  typedef ::boost::detail::multi_array::index Index;  typedef std::size_t SizeType;  typedef index_range<Index,SizeType> range;public:  template <int Dims, int Ranges>  struct gen_type {    typedef index_gen<Ranges,Dims> type;  };  typedef typename range_list_generator<range,NumRanges>::type range_list;  range_list ranges_;  index_gen() { }  template <int ND>  explicit index_gen(const index_gen<NumRanges-1,ND>& rhs,            const index_range<Index,SizeType>& range)  {    std::copy(rhs.ranges_.begin(),rhs.ranges_.end(),ranges_.begin());    *ranges_.rbegin() = range;  }  index_gen<NumRanges+1,NumDims+1>  operator[](const index_range<Index,SizeType>& range) const  {    index_gen<NumRanges+1,NumDims+1> tmp;    std::copy(ranges_.begin(),ranges_.end(),tmp.ranges_.begin());    *tmp.ranges_.rbegin() = range;    return tmp;  }  index_gen<NumRanges+1,NumDims>  operator[](Index idx) const  {    index_gen<NumRanges+1,NumDims> tmp;    std::copy(ranges_.begin(),ranges_.end(),tmp.ranges_.begin());    *tmp.ranges_.rbegin() = index_range<Index,SizeType>(idx);    return tmp;  }      static index_gen<0,0> indices() {    return index_gen<0,0>();  }};} // namespace multi_array} // namespace detail} // namespace boost#endif // BOOST_INDEX_GEN_RG071801_HPP

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?