X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=src%2Fgeneorder.h;fp=src%2Fgeneorder.h;h=b29a1acc2ceefc15d700f9720f09a2ad9f22568a;hb=c0c87c4e18985ba969174716f7576f291b0fd6a6;hp=ebc427a9c4c0f49bb770de0af27a3c8c795c80de;hpb=ca91837dd89a8f31174d83760ec37839c1c2a06f;p=germs.git diff --git a/src/geneorder.h b/src/geneorder.h index ebc427a..b29a1ac 100644 --- a/src/geneorder.h +++ b/src/geneorder.h @@ -33,8 +33,9 @@ class GeneOrder{ public: - typedef std::vector GeneList; + typedef std::vector GeneList; typedef GeneList::size_type size_type; + typedef GeneList::const_iterator iterator; /** * Creates a copy of the given gene order @@ -42,9 +43,20 @@ class GeneOrder{ GeneOrder(const GeneOrder& go); /** - * Creates a gene order from a given list. + * Creates a gene order from a given list, using STL-type iterators. * - * \throws invalid_argument if the list is not a valid permutation. + * The given permutation needs to contain all genes 1 to n, if 0 is + * included it has to be the first item, if it is not present it will + * be added automatically. Similarily, if n is not the last item, then + * n+1 will be added to the end. + * + * \param begin iterator to the first element in the list, from begin() + * on stl collections and pointer to first item on plain arrays. + * + * \param end iterator to the element behind the last, from end() in + * stl collections or pointer to first element+size on plain arrays. + * + * \throws std::invalid_argument if the list is not a valid permutation. */ template GeneOrder(T begin, T end); @@ -62,20 +74,36 @@ class GeneOrder{ /** * Returns the gene at the given index. * - * \throws out_of_range if i is smaller than 0 or too big. + * \throws std::out_of_range if i is smaller than 0 or bigger than n. */ const Gene& operator[](size_type i) const; /** * Returns the size of the permutation. */ - int size() const; + size_type size() const; /** * Returns the vector containing the gene order permutation. */ const GeneList& list() const; + /** + * Returns the start iterator for the permutation. + * To be used with STL style functions. + * + * \see end + */ + iterator begin() const; + + /** + * Returns the end iterator for the permutation. + * To be used with STL style functions. + * + * \see begin + */ + iterator end() const; + private: GeneList _geneorder;