13#if !defined(ULTRA_LINEAR_POPULATION_H)
14#define ULTRA_LINEAR_POPULATION_H
20#include "utility/misc.h"
25#include <shared_mutex>
74 using const_iterator =
typename std::vector<I>::const_iterator;
75 using iterator =
typename std::vector<I>::iterator;
76 using difference_type =
typename std::vector<I>::difference_type;
77 using coord = std::size_t;
93 [[nodiscard]] std::size_t
size() const noexcept;
95 [[nodiscard]]
bool empty() const noexcept;
97 [[nodiscard]]
std::
size_t allowed() const noexcept;
101 [[nodiscard]]
unsigned max_age() const noexcept;
106 void clear() noexcept;
114 [[nodiscard]] const_iterator
begin() const noexcept;
115 [[nodiscard]] iterator
begin() noexcept;
116 [[nodiscard]] const_iterator
end() const noexcept;
117 [[nodiscard]] iterator
end() noexcept;
120 [[nodiscard]]
std::shared_mutex &
mutex() const;
124 [[nodiscard]]
bool save(
std::ostream &) const;
129 [[nodiscard]]
bool is_valid() const;
132 mutable ignore_copy<
std::shared_mutex> mutex_ {};
134 std::vector<I> members_ {};
136 std::size_t allowed_ {std::numeric_limits<std::size_t>::max()};
137 std::size_t min_allowed_ {1};
139 unsigned max_age_ {std::numeric_limits<unsigned>::max()};
141 ignore_copy<app_level_uid> uid_ {};
void push_back(const I &)
Definition linear_population.h:211
std::size_t allowed() const noexcept
Definition linear_population.h:147
void pop_back()
Definition linear_population.h:223
const_iterator begin() const noexcept
Definition linear_population.h:234
unsigned max_age() const noexcept
Definition linear_population.h:112
bool save(std::ostream &) const
Definition linear_population.h:334
population_uid uid() const noexcept
Definition linear_population.h:353
bool empty() const noexcept
Definition linear_population.h:186
linear_population()=default
std::size_t size() const noexcept
Definition linear_population.h:90
void inc_age()
Definition linear_population.h:271
bool load(std::istream &, const symbol_set &)
Definition linear_population.h:286
void clear() noexcept
Definition linear_population.h:197
std::shared_mutex & mutex() const
Definition linear_population.h:135
I & operator[](std::size_t)
Definition linear_population.h:67
std::size_t safe_size() const
Definition linear_population.h:102
void reset(const ultra::problem &)
Definition linear_population.h:51
bool is_valid() const
Definition linear_population.h:364
const_iterator end() const noexcept
Definition linear_population.h:253
Definition symbol_set.h:115
unsigned population_uid
Definition population.h:29