18template <
class Number>
36 std::unique_ptr<NumberSet<Number>>
clone()
const override {
return std::make_unique<NumberSetFinite>(*
this); }
41 inline void resetValues(
const std::set<Number> &numbers)
override { _set = numbers; }
45 inline bool isEmpty()
const override {
return _set.empty(); }
46 inline bool isFinite()
const override {
return true; }
47 inline bool isInterval()
const override {
return false; }
48 inline size_t size()
const override {
return _set.size(); }
50 inline Number
getMin()
const override {
return *_set.begin(); }
51 inline Number
getMax()
const override {
return *_set.rbegin(); }
53 inline std::set<Number>
getAll()
const override {
return _set; }
61 auto it = std::begin(_set);
62 std::advance(it, _set.size() / 2);
74 std::set<Number> _set;
Class describing a finite set of numbers.
Definition: NumberSetFinite.h:19
Number getMedian() const override
Get the median of the set.
Definition: NumberSetFinite.h:60
std::set< Number > uniformSampleSet(size_t n, Random &rng) const override
Sample up to n points from the set.
Definition: NumberSetFinite.h:59
bool operator==(const NumberSet< Number > &rhs) const override
Comparison operator.
Definition: NumberSetFinite.h:66
NumberSetFinite(std::initializer_list< Number > values)
Create a NumberSet of given values.
Definition: NumberSetFinite.h:29
Number getRandom(Random &rng) const override
Get a random number in the set.
Definition: NumberSetFinite.h:55
NumberSetFinite(const std::set< Number > &values)
Create a NumberSet from a std::set.
Definition: NumberSetFinite.h:34
std::vector< Number > uniformSample(size_t n, Random &rng) const override
Sample n points from the set.
Definition: NumberSetFinite.h:56
size_t size() const override
Get size of set.
Definition: NumberSetFinite.h:48
Number getMax() const override
Get the largest number in the set.
Definition: NumberSetFinite.h:51
std::string to_string() const override
Get a string representation of the set.
Definition: NumberSetFinite.h:43
bool isEmpty() const override
Indicates if the set is empty.
Definition: NumberSetFinite.h:45
Number getMin() const override
Get the smallest number in the set.
Definition: NumberSetFinite.h:50
bool isFinite() const override
Indicates if the set is finite.
Definition: NumberSetFinite.h:46
std::unique_ptr< NumberSet< Number > > clone() const override
Create a copy of a NumberSet.
Definition: NumberSetFinite.h:36
bool isInterval() const override
Function to distinguish between NumberSetFinite and NumberInterval.
Definition: NumberSetFinite.h:47
NumberSetFinite()
Default Constructor: Empty set.
Definition: NumberSetFinite.h:24
std::set< Number > getAll() const override
Get all numbers in the set.
Definition: NumberSetFinite.h:53
void resetValues(const std::set< Number > &numbers) override
Setter for NumberSetFinite.
Definition: NumberSetFinite.h:41
Virtual class describing a finite or infinite set of numbers.
Definition: NumberSet.h:22
virtual bool isInterval() const =0
Function to distinguish between NumberSetFinite and NumberInterval.
virtual std::set< Number > getAll() const =0
Get all numbers in the set.
Class for random algorithms.
Definition: Random.h:22
std::set< T > randomSubset(std::set< T > pool, size_t n)
Pick up to n random elements from the set.
Definition: Random.h:125
auto pickRandom(const Container &pool)
Get a uniformly randomly selected object from the given container.
Definition: Random.h:107
std::vector< typename std::iterator_traits< Iter >::value_type > uniformSample(Iter poolBegin, Iter poolEnd, size_t n)
Sample n points from the pool.
Definition: Random.h:53
void to_string(std::ostream &os, const Container &container, const std::string &delimiter, const std::array< std::string, 2 > &surround, Fun elemToString)
Generates a string representation of a container which fulfills the Container requirement (provide cb...
Definition: ArrayUtils.h:102
This is the main namespace of AutoPas.
Definition: AutoPasDecl.h:32