vector class

PHOTO EMBED

Tue Jan 26 2021 22:43:21 GMT+0000 (Coordinated Universal Time)

Saved by @mahmoud hussein #c++

#pragma once
#ifndef MYVEC_H
#define MYVEC_H
#include <iostream>
#include<algorithm>

template <typename T>
class Myvec
{
public:
	Myvec();
	Myvec(int& size);
	Myvec(int& size, T& value);
	~Myvec();
	void push_back(T& value);
	void pop();
	unsigned int get_size()const;
	T at(int& index)const;
	bool empty()const;
	void clear();
	void swap(Myvec& v);
	void print();
private:
	T* elements;
	int size;
	int capacity;
	void ensureCapacity();
};
template<typename T>
Myvec<T>::Myvec():size(0),capacity(16)
{
	elements = new T[capacity];
}
template<typename T>
Myvec<T>::Myvec(int& size)
{
	size = size;
}
template<typename T>
Myvec<T>::Myvec(int& size, T& vlaue)
{
	size = size;
	elements[0] = vlaue;
}
template<typename T>
Myvec<T>::~Myvec()
{
	delete[] elements;
}
template<typename T>
void Myvec<T>::push_back(T& value)
{
	ensureCapacity();
	elements[size++] = value;
}
template < typename T>
void Myvec<T>::ensureCapacity()
{
	if (size >= capacity)
	{
		T* old = elements;
		capacity = 2 * size;
		elements = new T[size * 2];

		for (int i = 0; i < size; i++)
			elements[i] = old[i];

		delete[] old;
	}
}
template <typename T>
void Myvec<T>::pop()
{
	--size;
}
template <typename T>
unsigned int Myvec<T>::get_size()const
{
	return size;
}
template <typename T >
T Myvec<T>::at(int& index)const
{
	if(index < size)
		return elements[index];
}
template <typename T>
bool Myvec<T>::empty()const
{
	return size == 0;
}
template <typename T>
void Myvec<T>::clear()
{
	size = 0;
}
template <typename T>
void Myvec<T>::swap(Myvec& v)
{
	
	T* temp = new T[size];
	int s = this->size;
	for (int i = 0; i < s; i++)
	{
		temp[i] =this->elements[i];
	}
	
	this->clear();
	for (int i = 0; i < v.get_size(); i++)
	{
		this->push_back(v.elements[i]);
	}
	v.clear();
	for (int i = 0; i < s; i++)
	{
		v.push_back(temp[i]);
	}
	

	delete[]temp;
}
template<typename T>
void Myvec<T>::print()
{
	for (int i = 0; i < size; i++)
	{
		std::cout << this->at(i)<<" ";
	}
	std::cout << std::endl;
}
#endif // !MYVEC_H


#include <iostream>
#include <vector>
#include <string>
#include"Stack.h"
#include<algorithm>
#include "Myvec.h"

using namespace std;



int main()
{
	Myvec<int> v1;
	Myvec<int> v2;
	for (int i = 1; i < 50; i++)
	{
		v2.push_back(i);
	}
	for (int i = 0; i < 20; i++)
	{
		v1.push_back(i);
	}
	

	v1.print();
	cout << endl;
}
content_copyCOPY

http://cpp.sh/