X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=src%2Fchromosome.h;h=08d24c92c5b422290c0c3198ebf0be700b418963;hb=5e4a04634f1d31d4c774b44184cf08d3faf4d02a;hp=7582af05a12146f5f243472b00f15760fa102903;hpb=971fed67ac2e5a01b5232853c08e03ed05bebbe0;p=genetic.git diff --git a/src/chromosome.h b/src/chromosome.h index 7582af0..08d24c9 100644 --- a/src/chromosome.h +++ b/src/chromosome.h @@ -3,34 +3,77 @@ #include -#include +#include "gene.h" using namespace std; namespace genetic { - template < typename _Chromosome > + /** + * Chromosome of given Genes. + */ + template < typename _Gene > class Chromosome { + public: + /** + * Type representing Chromosome Gene + */ + typedef _Gene GeneType; protected: - vector<_Chromosome> genes; + /** + * Genes of the chromosome + */ + vector<_Gene> genes; + template friend class Chromosome; public: + /** + * Default constructor + */ Chromosome() {} - Chromosome(vector<_Chromosome> genes) { + /** + * Class constructor. Initializes Chromosome with the given Gene's + * + * @param genes vector containing Genes to use in Chromosome + */ + Chromosome(vector<_Gene> genes) { this->genes = genes; } /** Copy constructor */ - Chromosome(const Chromosome& chromosome) : genes(chromosome.get()) {} + Chromosome(const Chromosome& chromosome) + : genes(chromosome.genes) { + } - Chromosome& operator=(const Chromosome&){ + /** + * Copy operator. + * + * @param chromosome Chromosome from which the Genes should be copied. + * @return Chromosome instance containing copied Genes + */ + Chromosome& operator=(const Chromosome& chromosome) { + this->genes = chromosome.genes; return *this; } - vector<_Chromosome> get() { - return this->genes; + /** + * Returns number of Genes in current Chromosome + * + * @return number of Genes in current Chromosome + */ + unsigned int size() const { + return this->genes.size(); + } + + /** + * Returns i-th Gene in the current Chromosome + * + * @return i-th Gene in the current Chromosome + */ + _Gene& operator[](unsigned int i) { + return this->genes[i]; } }; } -#endif /* __CHROMOSOME_H */ \ No newline at end of file +#endif /* __CHROMOSOME_H */