Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
beluga::views::detail::random_intersperse_view< Range, Fn, URNG > Struct Template Reference

Implementation of the random_intersperse view as a view adaptor. More...

#include <random_intersperse.hpp>

Inheritance diagram for beluga::views::detail::random_intersperse_view< Range, Fn, URNG >:
Inheritance graph
[legend]

Classes

struct  adaptor
 Adaptor subclass that implements the random_intersperse logic. More...
 

Public Member Functions

 random_intersperse_view ()=default
 Default constructor. More...
 
constexpr random_intersperse_view (Range range, Fn fn, double probability, URNG &engine=ranges::detail::get_random_engine())
 Construct the view from a range to be adapted. More...
 

Private Types

using result_type = ranges::common_type_t< decltype(std::declval< Fn >()()), ranges::range_value_t< Range > >
 

Private Member Functions

constexpr auto begin_adaptor ()
 Return the adaptor for the begin iterator. More...
 
constexpr bool should_intersperse ()
 Return whether we should intersperse a value or increment the input iterator. More...
 

Private Attributes

std::bernoulli_distribution distribution_
 
URNG * engine_
 
ranges::semiregular_box_t< Fn > fn_
 

Detailed Description

template<class Range, class Fn, class URNG = typename ranges::detail::default_random_engine>
struct beluga::views::detail::random_intersperse_view< Range, Fn, URNG >

Implementation of the random_intersperse view as a view adaptor.

Template Parameters
RangeA forward range.
FnA callable type which takes no arguments and returns values to be inserted.
URNGA random number generator that satisfies the UniformRandomBitGenerator requirements.

Definition at line 45 of file random_intersperse.hpp.

Member Typedef Documentation

◆ result_type

template<class Range , class Fn , class URNG = typename ranges::detail::default_random_engine>
using beluga::views::detail::random_intersperse_view< Range, Fn, URNG >::result_type = ranges::common_type_t<decltype(std::declval<Fn>()()), ranges::range_value_t<Range> >
private

Definition at line 78 of file random_intersperse.hpp.

Constructor & Destructor Documentation

◆ random_intersperse_view() [1/2]

template<class Range , class Fn , class URNG = typename ranges::detail::default_random_engine>
beluga::views::detail::random_intersperse_view< Range, Fn, URNG >::random_intersperse_view ( )
default

Default constructor.

◆ random_intersperse_view() [2/2]

template<class Range , class Fn , class URNG = typename ranges::detail::default_random_engine>
constexpr beluga::views::detail::random_intersperse_view< Range, Fn, URNG >::random_intersperse_view ( Range  range,
Fn  fn,
double  probability,
URNG &  engine = ranges::detail::get_random_engine() 
)
inlineconstexpr

Construct the view from a range to be adapted.

Parameters
rangeThe range to be adapted.
fnThe generator function that returns values to be inserted.
probabilityThe probability of inserting a value on each iteration.
engineThe random number generator object.

Definition at line 64 of file random_intersperse.hpp.

Member Function Documentation

◆ begin_adaptor()

template<class Range , class Fn , class URNG = typename ranges::detail::default_random_engine>
constexpr auto beluga::views::detail::random_intersperse_view< Range, Fn, URNG >::begin_adaptor ( )
inlineconstexprprivate

Return the adaptor for the begin iterator.

Definition at line 112 of file random_intersperse.hpp.

◆ should_intersperse()

template<class Range , class Fn , class URNG = typename ranges::detail::default_random_engine>
constexpr bool beluga::views::detail::random_intersperse_view< Range, Fn, URNG >::should_intersperse ( )
inlineconstexprprivate

Return whether we should intersperse a value or increment the input iterator.

Definition at line 115 of file random_intersperse.hpp.

Member Data Documentation

◆ distribution_

template<class Range , class Fn , class URNG = typename ranges::detail::default_random_engine>
std::bernoulli_distribution beluga::views::detail::random_intersperse_view< Range, Fn, URNG >::distribution_
private

Definition at line 118 of file random_intersperse.hpp.

◆ engine_

template<class Range , class Fn , class URNG = typename ranges::detail::default_random_engine>
URNG* beluga::views::detail::random_intersperse_view< Range, Fn, URNG >::engine_
private

Definition at line 119 of file random_intersperse.hpp.

◆ fn_

template<class Range , class Fn , class URNG = typename ranges::detail::default_random_engine>
ranges::semiregular_box_t<Fn> beluga::views::detail::random_intersperse_view< Range, Fn, URNG >::fn_
private

Definition at line 117 of file random_intersperse.hpp.


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


beluga
Author(s):
autogenerated on Tue Jul 16 2024 02:59:54