small bug fixes

This commit is contained in:
gustavo 1999-02-10 13:39:48 +00:00
commit 9d1fdcd126
2 changed files with 34 additions and 24 deletions

View file

@ -9,34 +9,38 @@
#include <iostream> // ostream, istream #include <iostream> // ostream, istream
#include <functional> // bind2nd #include <functional> // bind2nd
#include <string> // string #include <string> // string
#include <eoVector.h> // EO #include <eoVector.h> // EO
//----------------------------------------------------------------------------- /*****************************************************************************
/** eoBin: implementation of binary chromosome. * eoBin: implementation of binary chromosome. *
based on STL's bit_vector (vector<bool>)*/ * based on STL's bit_vector (vector<bool>). *
//----------------------------------------------------------------------------- *****************************************************************************/
template <class F> class eoBin: public eoVector<bool,F> template <class F> class eoBin: public eoVector<bool, F>
{ {
public: public:
typedef bool Type;
/// (Default) Constructor. /**
/// @param size Size of the binary string. * (Default) Constructor.
* @param size Size of the binary string.
*/
eoBin(const unsigned& size = 0, const bool& value = false): eoBin(const unsigned& size = 0, const bool& value = false):
eoVector<bool,F>(size, value) {} eoVector<bool,F>(size, value) {}
/// (Default) Constructor. /**
/// @param size Size of the binary string. * Constructor.
* @param size Size of the binary string.
*/
eoBin(const unsigned& size, const eoRnd<Type>& rnd): eoVector<bool,F>(size) eoBin(const unsigned& size, const eoRnd<Type>& rnd): eoVector<bool,F>(size)
{ {
generate(begin(), end(), rnd); generate(begin(), end(), rnd);
} }
/// Constructor from istream. /**
/// @param is The istream to read from. * Constructor from istream.
* @param is The istream to read from.
*/
eoBin(istrstream& is) eoBin(istrstream& is)
{ {
readFrom(is); readFrom(is);
@ -48,15 +52,19 @@ template <class F> class eoBin: public eoVector<bool,F>
return "eoBin"; return "eoBin";
} }
/// To print me on a stream. /**
/// @param os The ostream. * To print me on a stream.
* @param os The ostream.
*/
void printOn(ostream& os) const void printOn(ostream& os) const
{ {
copy(begin(), end(), ostream_iterator<bool>(os)); copy(begin(), end(), ostream_iterator<bool>(os));
} }
/// To read me from a stream. /**
/// @param is The istream. * To read me from a stream.
* @param is The istream.
*/
void readFrom(istream& is) void readFrom(istream& is)
{ {
string bits; string bits;

View file

@ -24,6 +24,8 @@
template <class T, class fitnessT> template <class T, class fitnessT>
class eoVector: public eo1d<T, fitnessT>, public vector<T> { class eoVector: public eo1d<T, fitnessT>, public vector<T> {
public: public:
typedef Type T;
/// Canonical part of the objects: several ctors, copy ctor, dtor and assignment operator /// Canonical part of the objects: several ctors, copy ctor, dtor and assignment operator
//@{ //@{
@ -31,7 +33,7 @@ public:
@param _size Lineal length of the object @param _size Lineal length of the object
@param _val Common initial value @param _val Common initial value
*/ */
eoVector( unsigned _size, T _val = 0) eoVector( unsigned _size = 0, T _val = 0)
: eo1d<T, fitnessT>(), vector<T>( _size, _val ){ }; : eo1d<T, fitnessT>(), vector<T>( _size, _val ){ };
/** Ctor using a random number generator /** Ctor using a random number generator
@ -80,7 +82,7 @@ which is supposed to be dynamic and dependent on environment.
virtual T& gene( unsigned _i ) { virtual T& gene( unsigned _i ) {
if ( _i >= size() ) if ( _i >= size() )
throw out_of_range( "out_of_range when writing a gene"); throw out_of_range( "out_of_range when writing a gene");
return (*this)[_i]; return operator[](_i);
}; };
/** methods that implement the eo1d <em>protocol</em> /** methods that implement the eo1d <em>protocol</em>