Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class IndexOutOfBound : public logic_error {
- public:
- explicit IndexOutOfBound (const string& what_arg);
- };
- template <class T> class MyVector {
- private:
- int qtElementos;
- int capacidade;
- T *array;
- public:
- MyVector()
- {
- array = new T[10];
- capacidade = 10;
- qtElementos = 0;
- };
- MyVector(int cap)
- {
- array = new T[cap];
- capacidade = cap;
- qtElementos = 0;
- };
- void add(T novoElemento)
- {
- if ((qtElementos > capacidade))
- {
- capacidade = 2 * capacidade;
- T *novo_array = new T[capacidade];
- for (int i = 0; i < capacidade; ++i)
- {
- novo_array[i] = array[i];
- }
- array = novo_array;
- }
- array[qtElementos] = novoElemento;
- qtElementos++;
- };
- T get(int posicao)
- {
- try
- {
- return array[posicao];
- }
- catch (const IndexOutOfBound& ex)
- {
- throw(ex);
- }
- };
- int size()
- {
- return qtElementos;
- };
- bool empty()
- {
- if (qtElementos)
- {
- return false;
- }
- else
- {
- return true;
- }
- };
- };
- int main()
- {
- // Testes
- cout << "1 - Instanciando arrays 1 e 2" << endl;
- MyVector<int> vector1;
- MyVector<int> vector2(5);
- cout << "Vetor um vazio? " << vector1.empty() << endl;
- cout << "Vetor dois vazio? " << vector2.empty() << endl;
- cout << "2 - Adicionando elementos aos vetores" << endl;
- vector1.add(1);
- vector1.add(3);
- vector1.add(5);
- vector2.add(2);
- vector2.add(4);
- cout << "3 - Imprimindo os tamanhos apos as adicoes" << endl;
- cout << "Vetor um: " << vector1.size() << " | Vetor dois: " << vector2.size() << endl;
- cout << "4 - Retornando elemento um do vetor um e o elemento zero do vetor dois" << endl;
- cout << vector1.get(1) << ", " << vector2.get(0) << endl;
- cout << "5 - Verificando dinamicidade dos vetores utilizando o vetor 2" << endl;
- vector2.add(6);
- vector2.add(8);
- vector2.add(10);
- vector2.add(12);
- vector2.add(14);
- vector2.add(16);
- cout << "O vetor dois, que poderia receber no maximo cinco elementos, agora possui: " << vector2.size();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment