GeneOrder::iterator GeneOrder::end() const{
return _geneorder.end();
}
+
+struct Sign{
+ Gene operator()(Gene x) const{
+ return x*-1;
+ }
+};
+
+void GeneOrder::reverse(size_type i, size_type j){
+ if (i > j)
+ throw out_of_range("i can't be bigger than j");
+ if (i < 0)
+ throw out_of_range("Index i is not in valid range");
+ if (j >= _geneorder.size())
+ throw out_of_range("Index j is not in valid range");
+ GeneList::iterator begin = _geneorder.begin()+i;
+ GeneList::iterator end = _geneorder.begin()+j+1;
+
+ transform(begin,end,begin,Sign());
+ std::reverse(begin,end);
+}