模板概念与用法请看上一篇博客:c++模板,这里只实现代码
//Vector.h
#pragma once
template <class T>
class Vector
{
public:
Vector();
~Vector();
Vector(const Vector<T>& v);
Vector<T>& operator = (Vector<T> v);
void Expand(size_t n);
void PushBack(T value);
void PopBack();
void Insert(size_t pos, T value);
void Erase(size_t pos);
void Show();
protected:
size_t Size()const;
size_t Capacity()const;
protected:
T* _first;
T* _finish;
T* _endofstorage;
};
//Vector.cpp
#include "Vector.h"
#include <iostream>
using namespace std;
#include <assert.h>
#include <string>
template <class T>
Vector<T>::Vector() :_first(NULL), _finish(NULL), _endofstorage(NULL)
{}
template <class T>
Vector<T>::~Vector()
{
delete[] _first;
_first = _finish = _endofstorage = NULL;
}
template <class T>
Vector<T>::Vector(const Vector<T>& v)
{
size_t size = v.Size();
_first = new T[Capacity()];
size_t i = 0;
for (; i < size; ++i)
{
_first[i] = v._first[i];
}
_finish = _first + size;
_endofstorage = _first + v.Capacity();
}
template <class T>
Vector<T>& Vector<T>::operator = (Vector<T> v)
{
swap(_first, v._first);
swap(_finish, v._finish);
swap(_endofstorage, v._en