Mafro

Untitled

Feb 23rd, 2021
509
2 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. namespace wear {
  2. using namespace std;
  3.  
  4.    
  5.     template < typename T > class matrix
  6.     {
  7.     public:
  8.         matrix(const std::initializer_list< T >& list) : data(list)
  9.         {}
  10.         matrix()
  11.         {}
  12.  
  13.     public:
  14.         //iterator metods
  15.         struct iterator {
  16.             auto begin(){ return data.begin(); }
  17.         };
  18.  
  19.  
  20.     public:
  21.         size_t size() const
  22.         {
  23.             return data.size();
  24.         } // Find out the size of the matrix
  25.         size_t max_size() const
  26.         {
  27.             return data.max_size();
  28.         } // Find out the max size of the matrix
  29.         T at(size_t idContainer)
  30.         {
  31.             return data[idContainer];
  32.         } // Get the item from the container
  33.         bool empty() const
  34.         {
  35.             return data.empty();
  36.         } // Check for an empty matrix
  37.  
  38.         void push_back(T content)
  39.         {
  40.             data.push_back(content);
  41.         } // Adding an element to the beginning of the matrix
  42.         void pop_back()
  43.         {
  44.             data.pop_back();
  45.         } // Deleting an element at the beginning of the matrix
  46.         void clear()
  47.         {
  48.             data.clear();
  49.         } // Delete all elements in the matrix
  50.         void insert(size_t pos, T value)
  51.         {
  52.             data.insert(pos, value);
  53.         } // Add an item by key
  54.         void swap(matrix< T > src, matrix< T > dsc)
  55.         {
  56.             matrix< T > temp = src;
  57.             src = dsc;
  58.             dsc = temp;
  59.         } // Swap 2 matrices
  60.  
  61.         T operator[](size_t idContainer) const
  62.         {
  63.             return data[idContainer];
  64.         } // Get the item by key
  65.  
  66.         T& operator[](size_t idContainer)
  67.         {
  68.             if (data.size() < idContainer)
  69.                 data.resize(data.size() + idContainer);
  70.             return data[idContainer];
  71.         } //  Add an item by key
  72.  
  73.  
  74.         void operator=(const std::initializer_list< T >& list)
  75.         {
  76.             data.resize(list.size());
  77.             memcpy(list, data, list.size());
  78.         } // Re-iterating the matrix
  79.  
  80.         void operator=(matrix< T > src)
  81.         {
  82.             if (src.size() > data.size())
  83.                 data.resize(src.size());
  84.             memcpy(src, data, src.size());
  85.         } // Copying from another matrix
  86.  
  87.         void copy(matrix< T > src)
  88.         {
  89.             if (src.size() > data.size())
  90.                 data.resize(src.size());
  91.             memcpy(src, data, src.size());
  92.         } // Copying from another matrix
  93.  
  94.     protected:
  95.         std::vector< T > data;
  96.     };
  97.  
  98. } // namespace wear
  99.  
RAW Paste Data