9#ifndef __OCCUPANCY_SPECTRUM_CLASS_H_INCLUDED__
10#define __OCCUPANCY_SPECTRUM_CLASS_H_INCLUDED__
20namespace occupancy_spectrum
45 using occupancy_spectrum_type = std::vector<int>;
47 occupancy_spectrum_type M_j;
55 bool test_number_of_balls_conservation()
58 for (
int i = 0; i < this->M_j.size(); ++i)
60 assert(this->M_j.at(i) >= 0);
61 sum += i * (this->M_j.at(i));
63 return (sum == this->k);
68 bool test_number_of_urns_conservation()
71 for (
int i = 0; i < this->M_j.size(); ++i)
73 assert(this->M_j.at(i) >= 0);
74 sum += this->M_j.at(i);
76 return (sum == this->N);
81 using value_type =
typename occupancy_spectrum_type::value_type;
83 using iterator =
typename occupancy_spectrum_type::iterator;
85 using const_iterator =
typename occupancy_spectrum_type::const_iterator;
96 assert(test_number_of_balls_conservation());
97 assert(test_number_of_urns_conservation());
107 assert(this->N >= 0);
108 assert(this->k >= 0);
109 assert(test_number_of_balls_conservation());
110 assert(test_number_of_urns_conservation());
129 assert(this->N >= 0);
130 assert(this->k >= 0);
131 assert(test_number_of_balls_conservation());
132 assert(test_number_of_urns_conservation());
140 this->M_j = std::move(otherCopy.M_j);
141 this->N = otherCopy.N;
142 this->k = otherCopy.k;
154 this->M_j = std::move(other.M_j);
183 const_iterator
end()
const
204 void erase(iterator first, iterator last)
206 M_j.erase(first, last);
An occupancy spectrum as defined in Becheler & Knowles, 2020.
Definition OccupancySpectrum.hpp:42
const_iterator begin() const
returns iterator to the beginning of the spectrum
Definition OccupancySpectrum.hpp:176
OccupancySpectrum & operator=(OccupancySpectrum &&other)
Move assignment operator.
Definition OccupancySpectrum.hpp:152
iterator end()
returns iterator to the end of the spectrum
Definition OccupancySpectrum.hpp:169
const_iterator cend() const
returns iterator to the end of the spectrum
Definition OccupancySpectrum.hpp:197
bool empty() const
Returns whether the spectrum is empty (i.e. whether its size is 0).
Definition OccupancySpectrum.hpp:211
OccupancySpectrum(std::vector< int > const &v, int k, int N)
Constructor by copy.
Definition OccupancySpectrum.hpp:92
OccupancySpectrum(OccupancySpectrum &&other) noexcept
Move constructor.
Definition OccupancySpectrum.hpp:127
iterator begin()
returns iterator to the beginning of the spectrum
Definition OccupancySpectrum.hpp:162
OccupancySpectrum(std::vector< int > &&v, int k, int N)
Move constructor.
Definition OccupancySpectrum.hpp:105
void erase(iterator first, iterator last)
erase a range of elements of the spectrum.
Definition OccupancySpectrum.hpp:204
const_iterator end() const
returns iterator to the end of the spectrum
Definition OccupancySpectrum.hpp:183
OccupancySpectrum & operator=(const OccupancySpectrum &other)
Copy assignment operator.
Definition OccupancySpectrum.hpp:137
OccupancySpectrum()=delete
Deleted default constructor.
const_iterator cbegin() const
returns iterator to the beginning of the spectrum
Definition OccupancySpectrum.hpp:190
OccupancySpectrum(const OccupancySpectrum &other)=default
Default copy constructor.
Simulation of coalescence-based models of molecular evolution.
Definition coalescence.hpp:21