13#if !defined(ULTRA_VECTOR_INDIVIDUAL_H)
14#define ULTRA_VECTOR_INDIVIDUAL_H
18#include "utility/log.h"
19#include "utility/misc.h"
40 static_assert(std::same_as<T, D_INT>
41 || std::same_as<T, D_DOUBLE>
42 || std::same_as<T, value_t>,
43 "Unsupported gene type");
46 using genome_t = std::vector<T>;
47 using const_iterator = genome_t::const_iterator;
48 using iterator = genome_t::iterator;
49 using value_type = genome_t::value_type;
52 [[nodiscard]] const_iterator
begin() const noexcept;
53 [[nodiscard]] const_iterator
end() const noexcept;
56 [[nodiscard]] const value_type &operator[](
std::
size_t) const;
59 vector_individual &operator=(const
std::vector<T> &);
62 [[nodiscard]]
bool empty() const noexcept;
63 [[nodiscard]]
std::
size_t size() const noexcept;
67 [[nodiscard]] operator const
std::vector<T> &() const noexcept;
73 vector_individual() = default;
74 explicit vector_individual(
std::
size_t);
79 requires
std::invocable<F &, T &>
80 &&
std::same_as<
std::invoke_result_t<F &, T &>,
void>
84 requires
std::invocable<F &, T &>
85 &&
std::same_as<
std::invoke_result_t<F &, T &>,
void>
97 [[nodiscard]]
bool load_impl(
std::istream &, const
symbol_set &) override;
98 [[nodiscard]]
bool save_impl(
std::ostream &) const override;
102template<class T> [[nodiscard]]
bool operator==(
103 const vector_individual<T> &, const vector_individual<T> &) noexcept;
105 const vector_individual<T> &) noexcept;
107#include "kernel/vector_individual.tcc"
void apply_each(std::size_t, std::size_t, F &&)
Definition vector_individual.h:114
Definition individual.h:54
Definition symbol_set.h:115
hash_t hash() const override
Definition vector_individual.h:193
std::size_t parameters() const noexcept
Definition vector_individual.h:173
bool empty() const noexcept
Definition vector_individual.h:164
bool is_valid() const
Definition vector_individual.h:231
const_iterator begin() const noexcept
Definition vector_individual.h:65
std::size_t active_slots(const vector_individual< T > &ind) noexcept
Definition vector_individual.h:222
const_iterator end() const noexcept
Definition vector_individual.h:75
std::size_t size() const noexcept
Definition vector_individual.h:182