STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
shuffle_order_engine< _Engine, _Kx > Class Template Reference

Public Types

typedef shuffle_order_engine< _Engine, _Kx > _Myt
 
typedef _Engine base_type
 
typedef _Engine::result_type result_type
 

Public Member Functions

 shuffle_order_engine ()
 
 shuffle_order_engine (const _Engine &_Ex)
 
 shuffle_order_engine (_Engine &&_Ex)
 
 shuffle_order_engine (result_type _X0)
 
template<class _Seed_seq , class = typename _Enable_if_seed_seq<_Seed_seq, _Myt, _Engine>::type>
 shuffle_order_engine (_Seed_seq &_Seq)
 
void seed ()
 
void seed (result_type _X0)
 
template<class _Seed_seq , class = typename _Enable_if_seed_seq<_Seed_seq, _Myt>::type>
void seed (_Seed_seq &_Seq)
 
const _Engine & base () const _NOEXCEPT
 
result_type operator() ()
 
void discard (unsigned long long _Nskip)
 
template<class _Elem , class _Traits >
basic_istream< _Elem, _Traits > & _Read (basic_istream< _Elem, _Traits > &_Istr)
 
template<class _Elem , class _Traits >
basic_ostream< _Elem, _Traits > & _Write (basic_ostream< _Elem, _Traits > &_Ostr) const
 

Static Public Member Functions

static constexpr result_type() min ()
 
static constexpr result_type() max ()
 

Static Public Attributes

static constexpr size_t table_size = _Kx
 

Private Member Functions

void _Init ()
 

Private Attributes

_Engine _Eng
 
result_type _Arr [_Kx]
 
result_type _Yx
 
double _Scale
 

Member Typedef Documentation

template<class _Engine, size_t _Kx>
typedef shuffle_order_engine<_Engine, _Kx> shuffle_order_engine< _Engine, _Kx >::_Myt
template<class _Engine, size_t _Kx>
typedef _Engine shuffle_order_engine< _Engine, _Kx >::base_type
template<class _Engine, size_t _Kx>
typedef _Engine::result_type shuffle_order_engine< _Engine, _Kx >::result_type

Constructor & Destructor Documentation

template<class _Engine, size_t _Kx>
shuffle_order_engine< _Engine, _Kx >::shuffle_order_engine ( )
inline
2026  { // construct
2027  _Init();
2028  }
void _Init()
Definition: random:2129
template<class _Engine, size_t _Kx>
shuffle_order_engine< _Engine, _Kx >::shuffle_order_engine ( const _Engine &  _Ex)
inlineexplicit
2031  : _Eng(_Ex)
2032  { // construct with engine initializer _Ex
2033  _Init();
2034  }
void _Init()
Definition: random:2129
_Engine _Eng
Definition: random:2138
template<class _Engine, size_t _Kx>
shuffle_order_engine< _Engine, _Kx >::shuffle_order_engine ( _Engine &&  _Ex)
inlineexplicit
2037  : _Eng(_STD forward<_Engine>(_Ex))
2038  { // construct with engine initializer _Ex
2039  _Init();
2040  }
void _Init()
Definition: random:2129
_Engine _Eng
Definition: random:2138
template<class _Engine, size_t _Kx>
shuffle_order_engine< _Engine, _Kx >::shuffle_order_engine ( result_type  _X0)
inlineexplicit
2043  : _Eng(_X0)
2044  { // construct from specified seed value
2045  _Init();
2046  }
void _Init()
Definition: random:2129
_Engine _Eng
Definition: random:2138
template<class _Engine, size_t _Kx>
template<class _Seed_seq , class = typename _Enable_if_seed_seq<_Seed_seq, _Myt, _Engine>::type>
shuffle_order_engine< _Engine, _Kx >::shuffle_order_engine ( _Seed_seq &  _Seq)
inlineexplicit
2051  : _Eng(_Seq)
2052  { // construct from seed sequence
2053  _Init();
2054  }
void _Init()
Definition: random:2129
_Engine _Eng
Definition: random:2138

Member Function Documentation

template<class _Engine, size_t _Kx>
void shuffle_order_engine< _Engine, _Kx >::_Init ( )
inlineprivate
2130  { // compute values for operator()
2131  for (size_t _Idx = 0; _Idx < _Kx; ++_Idx)
2132  _Arr[_Idx] = _Eng();
2133  _Yx = _Eng();
2134  _Scale = (double)_Kx
2135  / ((double)(_Eng.max)() - (double)(_Eng.min)() + 1.0);
2136  }
double _Scale
Definition: random:2141
result_type _Arr[_Kx]
Definition: random:2139
result_type _Yx
Definition: random:2140
_Engine _Eng
Definition: random:2138
template<class _Engine, size_t _Kx>
template<class _Elem , class _Traits >
basic_istream<_Elem, _Traits>& shuffle_order_engine< _Engine, _Kx >::_Read ( basic_istream< _Elem, _Traits > &  _Istr)
inline
2110  { // read state from _Istr
2111  _Istr >> _Eng;
2112  for (size_t _Idx = 0; _Idx < _Kx; ++_Idx)
2113  _Istr >> _Arr[_Idx];
2114  return (_Istr >> _Yx);
2115  }
result_type _Arr[_Kx]
Definition: random:2139
result_type _Yx
Definition: random:2140
_Engine _Eng
Definition: random:2138
template<class _Engine, size_t _Kx>
template<class _Elem , class _Traits >
basic_ostream<_Elem, _Traits>& shuffle_order_engine< _Engine, _Kx >::_Write ( basic_ostream< _Elem, _Traits > &  _Ostr) const
inline
2121  { // write state to _Ostr
2122  _Ostr << _Eng;
2123  for (size_t _Idx = 0; _Idx < _Kx; ++_Idx)
2124  _Ostr << ' ' << _Arr[_Idx];
2125  return (_Ostr << ' ' << _Yx);
2126  }
result_type _Arr[_Kx]
Definition: random:2139
result_type _Yx
Definition: random:2140
_Engine _Eng
Definition: random:2138
template<class _Engine, size_t _Kx>
const _Engine& shuffle_order_engine< _Engine, _Kx >::base ( ) const
inline
2077  { // return const reference to engine
2078  return (_Eng);
2079  }
_Engine _Eng
Definition: random:2138
template<class _Engine, size_t _Kx>
void shuffle_order_engine< _Engine, _Kx >::discard ( unsigned long long  _Nskip)
inline
2101  { // discard _Nskip elements
2102  for (; 0 < _Nskip; --_Nskip)
2103  (*this)();
2104  }
template<class _Engine, size_t _Kx>
static constexpr result_type() shuffle_order_engine< _Engine, _Kx >::max ( )
inlinestatic
2087  { // return maximum possible generated value
2088  return ((_Engine::max)());
2089  }
constexpr const _Ty &() max(const _Ty &_Left, const _Ty &_Right, _Pr _Pred) _NOEXCEPT_OP(_NOEXCEPT_OP(_DEBUG_LT_PRED(_Pred
template<class _Engine, size_t _Kx>
static constexpr result_type() shuffle_order_engine< _Engine, _Kx >::min ( )
inlinestatic
2082  { // return minimum possible generated value
2083  return ((_Engine::min)());
2084  }
constexpr const _Ty &() min(const _Ty &_Left, const _Ty &_Right, _Pr _Pred) _NOEXCEPT_OP(_NOEXCEPT_OP(_DEBUG_LT_PRED(_Pred
template<class _Engine, size_t _Kx>
result_type shuffle_order_engine< _Engine, _Kx >::operator() ( )
inline
2092  { // return next value
2093  size_t _Idx = (size_t)((double)(_Yx - (_Eng.min)()) * _Scale);
2094 
2095  _Yx = _Arr[_Idx];
2096  _Arr[_Idx] = _Eng();
2097  return (_Yx);
2098  }
double _Scale
Definition: random:2141
unsigned int size_t
Definition: sourceannotations.h:19
result_type _Arr[_Kx]
Definition: random:2139
result_type _Yx
Definition: random:2140
_Engine _Eng
Definition: random:2138
template<class _Engine, size_t _Kx>
void shuffle_order_engine< _Engine, _Kx >::seed ( )
inline
2057  { // seed engine from default value
2058  _Eng.seed();
2059  _Init();
2060  }
void _Init()
Definition: random:2129
_Engine _Eng
Definition: random:2138
template<class _Engine, size_t _Kx>
void shuffle_order_engine< _Engine, _Kx >::seed ( result_type  _X0)
inline
2063  { // seed engine from specified value
2064  _Eng.seed(_X0);
2065  _Init();
2066  }
void _Init()
Definition: random:2129
_Engine _Eng
Definition: random:2138
template<class _Engine, size_t _Kx>
template<class _Seed_seq , class = typename _Enable_if_seed_seq<_Seed_seq, _Myt>::type>
void shuffle_order_engine< _Engine, _Kx >::seed ( _Seed_seq &  _Seq)
inline
2071  { // seed engine from seed sequence
2072  _Eng.seed(_Seq);
2073  _Init();
2074  }
void _Init()
Definition: random:2129
_Engine _Eng
Definition: random:2138

Member Data Documentation

template<class _Engine, size_t _Kx>
result_type shuffle_order_engine< _Engine, _Kx >::_Arr[_Kx]
private
template<class _Engine, size_t _Kx>
_Engine shuffle_order_engine< _Engine, _Kx >::_Eng
private
template<class _Engine, size_t _Kx>
double shuffle_order_engine< _Engine, _Kx >::_Scale
private
template<class _Engine, size_t _Kx>
result_type shuffle_order_engine< _Engine, _Kx >::_Yx
private
template<class _Engine, size_t _Kx>
constexpr size_t shuffle_order_engine< _Engine, _Kx >::table_size = _Kx
static

The documentation for this class was generated from the following file: