daily pastebin goal
4%
SHARE
TWEET

Untitled

a guest Oct 12th, 2017 49 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<vector>
  2. #include<iostream>
  3. #include<stdexcept>
  4. #include<string>
  5.  
  6.  
  7. class Matrix {
  8.     std::vector<std::vector<int> > pos;
  9.     size_t n, m;
  10.  
  11. public:
  12.     Matrix(const std::vector<std::vector<int>>& v) {
  13.         if (v.size() == 0) {
  14.             n = m = 0;
  15.         } else {
  16.             size_t x = v[0].size();
  17.             for (size_t i = 0; i != v.size(); ++i)
  18.                 if (v[i].size() != x)
  19.                     throw(std::length_error("constructor row length error"));
  20.             m = x;
  21.             n = v.size();
  22.             pos.resize(v.size(), std::vector<int>(v[0].size()));
  23.             for (size_t i = 0; i != v.size(); ++i)
  24.                 for (size_t j = 0; j != v[0].size(); ++j)
  25.                     pos[i][j] = v[i][j];
  26.         }
  27.     }
  28.     void print() const {
  29.         for (size_t i = 0; i != n; ++i) {
  30.             for (size_t j = 0; j != m; ++j) {
  31.                 if (j > 0)
  32.                     std::cout << '\t';
  33.                 std::cout << pos[i][j];
  34.             }
  35.             std::cout << '\n';
  36.         }
  37.     }
  38.     std::pair<size_t, size_t> size() const {
  39.         return {n, m};
  40.     }
  41.     int get_elem(int row, int col) const {
  42.         if (row >= static_cast<int>(n) || col >= static_cast<int>(m))
  43.             throw(std::out_of_range("get_elem bad indices"));
  44.         return pos[static_cast<size_t>(row)][static_cast<size_t>(col)];
  45.     }
  46.     Matrix operator +(const Matrix& other) const {
  47.         if (n != other.n || m != other.m) {
  48.             throw std::length_error("operator+ size error");
  49.         }
  50.         Matrix c(pos);
  51.         for (size_t i = 0; i != n; ++i)
  52.             for (size_t j = 0; j != m; ++j) {
  53.                 c.pos[i][j] += other.pos[i][j];
  54.             }
  55.         return c;
  56.     }
  57. };
RAW Paste Data
Top