Vector& Vector:: operator=( const Vector &A ) { if( r ) r->unrefer(); r = A.r->refer(); return *this; }
/* assign changes the matrix, it does not create a new one! */ double Vector:: assign( int rownum, double d ) { assert(r != 0); if( rownum > row() || rownum <= 0 ) { std::cerr << "Warning: trying to assign out of bounds" << std::endl; std::cerr << "row " << rownum << std::endl; std::cerr << "Vector size " << row() << std::endl; std::abort(); } if( r->count == 1 ) { /* Don't need to create a new matrix, since we are the only */ /* one pointing to ours */ } else { VectorInt *vi = new VectorInt( *r ); r->unrefer(); r = vi->refer(); } return d; }