Conjugate transpose: Difference between revisions

Content added Content deleted
(Added C++ solution)
m (C++ code made slightly shorter)
Line 340: Line 340:
size_t rows() const { return rows_; }
size_t rows() const { return rows_; }
size_t columns() const { return columns_; }
size_t columns() const { return columns_; }

element_type* data() { return &elements_[0]; }
element_type* data() { return &elements_[0]; }
const element_type* data() const { return &elements_[0]; }
const element_type* data() const { return &elements_[0]; }

element_type* row_data(size_t row) {
element_type* row_data(size_t row) {
assert(row < rows_);
assert(row < rows_);
Line 352: Line 354:


const element_type& at(size_t row, size_t column) const {
const element_type& at(size_t row, size_t column) const {
assert(row < rows_);
assert(column < columns_);
assert(column < columns_);
return elements_[index(row, column)];
return row_data(row)[column];
}
}
element_type& at(size_t row, size_t column) {
element_type& at(size_t row, size_t column) {
assert(row < rows_);
assert(column < columns_);
assert(column < columns_);
return elements_[index(row, column)];
return row_data(row)[column];
}
}


Line 367: Line 367:
}
}
private:
private:
size_t index(size_t row, size_t column) const {
return row * columns_ + column;
}
size_t rows_;
size_t rows_;
size_t columns_;
size_t columns_;