#ifndef NALOGA0801_SPARSEMATRIX2D_H #define NALOGA0801_SPARSEMATRIX2D_H #include #include "Element.h" template class SparseMatrix2D { private: std::vector> elements; unsigned int sizeX, sizeY; T defaultElement; public: SparseMatrix2D(unsigned int sizeX, unsigned int sizeY, T defaultElement); void set(unsigned int x, unsigned int y, T value); T at(unsigned int x, unsigned int y); unsigned int getSizeX(); unsigned int getSizeY(); bool compareSize(SparseMatrix2D comp); }; template SparseMatrix2D::SparseMatrix2D(unsigned int sizeX, unsigned int sizeY, T defaultElement) : sizeX(sizeX), sizeY(sizeY), defaultElement(defaultElement) {} template void SparseMatrix2D::set(unsigned int x, unsigned int y, T value) { bool elementExiest = false; for (int i = 0; i < elements.size(); ++i) { if (elements[i].getX() == x and elements[i].getY() == y) { elements[i].setValue(value); elementExiest = true; } } if (!elementExiest) { Element tmp(x, y, value); elements.push_back(tmp); } } template T SparseMatrix2D::at(unsigned int x, unsigned int y) { for (int i = 0; i < elements.size(); ++i) { if (elements[i].getX() == x and elements[i].getY() == y) { return elements[i].getValue(); } } return defaultElement; } template unsigned int SparseMatrix2D::getSizeX() { return sizeX; } template unsigned int SparseMatrix2D::getSizeY() { return sizeY; } template bool SparseMatrix2D::compareSize(SparseMatrix2D comp) { return sizeX == comp.getSizeX() and sizeY == comp.getSizeY(); } #endif //NALOGA0801_SPARSEMATRIX2D_H