Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // Created by anna on 20.04.18.
- //
- //declaration
- #ifndef MATRIX_DECLARATION_H
- #define MATRIX_DECLARATION_H
- #include <algorithm>
- #include <iostream>
- using namespace std;
- class Matrix{
- private: int m, n;
- int** array;
- public: Matrix(int**, int, int);
- int countColumns();
- int countRows();
- void addColumn(int*);
- void addRow(int*);
- ~ Matrix();
- Matrix(const Matrix &obj);
- Matrix&operator= (const Matrix &obj);
- class Row {
- private: Matrix *matrix;
- int i;
- public: Row(Matrix* matrix, int i){
- this->matrix = matrix;
- this->i = i;
- }
- int& Row::operator[](int j) {
- return (*matrix).array[i][j];
- }
- };
- Row operator [] (int i){
- return Row(this, i);
- }
- };
- #endif MATRIX_DECLARATION_H
- //implementation
- #include "cmake-build-debug/declaration.h"
- // Created by anna on 20.04.18.
- //
- int Matrix::countColumns() {
- return this->n;
- }
- int Matrix::countRows(){
- return this->m;
- }
- Matrix::Matrix(int ** arr, int m, int n) {
- this->m = m;
- this->n = n;
- this->array = new int*[m];
- for(int i=0; i<m; i++)
- this->array[i] = new int[n];
- copy(arr, arr + n*m, this->array);
- }
- Matrix::~Matrix() {
- for(int i=0;i<m; i++)
- delete [] this->array[i];
- delete this->array;
- }
- Matrix::Matrix(const Matrix &obj) {
- m = obj.m;
- n = obj.n;
- array = new int*[m];
- for(int i=0; i<m; i++)
- array[i] = new int[n];
- copy(obj.array, obj.array+n*m, array);
- }
- Matrix& Matrix::operator=(const Matrix &obj) {
- swap(n, obj.n);
- swap(m, obj.m);
- swap(array, obj.array);
- }
- Matrix::addColumn(int *column) {
- n++;
- int ** array = new int*[m];
- for(int i=0; i<m; i++)
- array[i] = new int[n];
- for(int i=0; i<m; i++)
- for(int j=0; j<n; j++)
- if(j == n-1) array[i][j] = column[i];
- else array[i][j] = this->array[i][j];
- swap(array, this->array);
- for(int i=0;i<m; i++)
- delete [] array[i];
- delete array;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement