victorialais

Vector

Dec 4th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.14 KB | None | 0 0
  1. #include <iostream>
  2.  
  3.  
  4. using namespace std;
  5.  
  6. class IndexOutOfBound : public logic_error {
  7.     public:
  8.         explicit IndexOutOfBound (const string& what_arg);
  9. };
  10.  
  11. template <class T> class MyVector {
  12.     private:
  13.         int qtElementos;
  14.         int capacidade;
  15.         T *array;
  16.  
  17.     public:
  18.         MyVector()
  19.         {
  20.             array = new T[10];
  21.             capacidade = 10;
  22.             qtElementos = 0;
  23.         };
  24.        
  25.         MyVector(int cap)
  26.         {
  27.             array = new T[cap];
  28.             capacidade = cap;
  29.             qtElementos = 0;
  30.         };
  31.  
  32.         void add(T novoElemento)
  33.         {
  34.             if ((qtElementos > capacidade))
  35.             {
  36.                 capacidade = 2 * capacidade;
  37.                 T *novo_array = new T[capacidade];
  38.  
  39.                 for (int i = 0; i < capacidade; ++i)
  40.                 {
  41.                     novo_array[i] = array[i];
  42.                 }
  43.  
  44.                 array = novo_array;
  45.             }
  46.      
  47.       array[qtElementos] = novoElemento;
  48.       qtElementos++;
  49.         };
  50.  
  51.         T get(int posicao)
  52.         {
  53.             try
  54.             {
  55.                 return array[posicao];
  56.             }
  57.             catch (const IndexOutOfBound& ex)
  58.             {
  59.                 throw(ex);
  60.             }
  61.         };
  62.        
  63.         int size()
  64.         {
  65.             return qtElementos;
  66.         };
  67.        
  68.         bool empty()
  69.         {
  70.             if (qtElementos)
  71.             {
  72.                 return false;
  73.             }
  74.             else
  75.             {
  76.                 return true;
  77.             }
  78.         };
  79. };
  80.  
  81. int main()
  82. {
  83.     // Testes
  84.     cout << "1 - Instanciando arrays 1 e 2" << endl;
  85.  
  86.     MyVector<int> vector1;
  87.     MyVector<int> vector2(5);
  88.  
  89.     cout << "Vetor um vazio? " << vector1.empty() << endl;
  90.     cout << "Vetor dois vazio? " << vector2.empty() << endl;
  91.  
  92.     cout << "2 - Adicionando elementos aos vetores" << endl;
  93.     vector1.add(1);
  94.     vector1.add(3);
  95.     vector1.add(5);
  96.  
  97.     vector2.add(2);
  98.     vector2.add(4);
  99.  
  100.     cout << "3 - Imprimindo os tamanhos apos as adicoes" << endl;
  101.     cout << "Vetor um: " << vector1.size() << " | Vetor dois: " << vector2.size() << endl;
  102.  
  103.     cout << "4 - Retornando elemento um do vetor um e o elemento zero do vetor dois" << endl;
  104.     cout << vector1.get(1) << ", " << vector2.get(0) << endl;
  105.  
  106.     cout << "5 - Verificando dinamicidade dos vetores utilizando o vetor 2" << endl;
  107.  
  108.     vector2.add(6);
  109.     vector2.add(8);
  110.     vector2.add(10);
  111.     vector2.add(12);
  112.     vector2.add(14);
  113.     vector2.add(16);
  114.  
  115.     cout << "O vetor dois, que poderia receber no maximo cinco elementos, agora possui: " << vector2.size();
  116.  
  117.     return 0;
  118. }
Advertisement
Add Comment
Please, Sign In to add comment