1 #ifndef LOCARNA_MATRIX_HH 2 #define LOCARNA_MATRIX_HH 34 typedef typename std::vector<elem_t>::size_type
size_type;
52 size_type
addr(size_type i, size_type j)
const {
53 assert(0<=i && i<this->xdim_);
54 assert(0<=j && j<this->ydim_);
64 : mat_(),xdim_(0),ydim_(0) {
77 Matrix(size_type xdim, size_type ydim,
const elem_t *from=0L)
78 : mat_(xdim*ydim),xdim_(xdim),ydim_(ydim) {
80 for (size_type i=0; i<
xdim_; i++) {
81 for (size_type j=0; j<
ydim_; j++) {
82 (*this)(i,j)=from[i*ydim+j];
108 mat_.resize(xdim_*ydim_);
120 return mat_[
addr(i,j)];
132 return mat_[
addr(i,j)];
143 const elem_t
get(size_type i,size_type j)
const {
144 return mat_[
addr(i,j)];
156 set(size_type i,size_type j,
const elem_t &x) {
168 for (size_type i=0; i<xdim_*
ydim_; ++i)
191 template<
class UnaryOperator>
193 std::transform(mat_.begin(),mat_.end(),mat_.begin(),f);
206 std::ostream & operator << (std::ostream &out, Matrix<T> mat) {
211 out << mat(i,j) <<
" ";
241 #endif // LOCARNA_MATRIX_HH std::vector< elem_t > mat_
vector storing the matrix entries
Definition: matrix.hh:39
void transform(UnaryOperator f)
Definition: matrix.hh:192
size_type xdim_
first dimension
Definition: matrix.hh:40
Matrix()
Definition: matrix.hh:63
Matrix(size_type xdim, size_type ydim, const elem_t *from=0L)
Definition: matrix.hh:77
void resize(size_type xdim, size_type ydim)
Definition: matrix.hh:104
Definition: aligner.cc:17
size_type ydim_
second dimension
Definition: matrix.hh:41
std::pair< size_type, size_type > size_pair_type
type for pair of sizes
Definition: matrix.hh:36
T elem_t
type of elements
Definition: matrix.hh:33
void fill(const elem_t &val)
Fill the whole matrix with the given value.
Definition: matrix.hh:167
void clear()
Definition: matrix.hh:178
simple 2D matrix class, provides access via operator (int,int)
Definition: aligner_impl.hh:19
std::vector< elem_t >::size_type size_type
size type (from underlying vector)
Definition: matrix.hh:34
std::istream & operator>>(std::istream &in, Matrix< T > &mat)
Definition: matrix.hh:227
const elem_t & operator()(size_type i, size_type j) const
Definition: matrix.hh:119
size_pair_type sizes() const
Definition: matrix.hh:93
size_type addr(size_type i, size_type j) const
Definition: matrix.hh:52