64,645
社区成员
发帖
与我相关
我的任务
分享
#include <algorithm>
#include <memory>
template <typename T>
class Vector
{
public:
typedef T * iterator;
typedef std::size_t size_type;
private:
static std::allocator<T> alloc;//一个静态对象所有Vector<T>对象可以公用,调用相应的成员函数分配不同的空间
iterator element;
iterator first_free;
iterator end;
void destory();//销毁元素及释放内存
template <typename iter>
void copy_elem(iter b, iter e);//复制元素
void reallocate();//重新分配足够空间,一般是原来空间的两倍
public:
Vector() : element(0), first_free(0), end(0) {}
template <typename iter>
Vector(iter b, iter e);//使用同类模版构造
Vector(size_type n, const T &t);
Vector(const Vector &vec);//复制构造
~Vector() { destory(); }
Vector &operator =(const Vector &vec);//赋值重载
void push_back(const T &t);
size_type size() const { return first_free - element; }
void resize(size_type new_size, const T &t);
void reserved(size_type n);//重新分配空间
size_type capacity() const { return end - element; }
T &operator [](size_type i) { return *(element + i); }
const T &operator [](size_type i) const { return *(element + i); }
};
template <typename T>
void Vector<T>::resize(Vector<T>::size_type new_size, const T &t)
{
if(size() < new_size)
{
if(capacity() < new_size)
reallocate();
uninitialized_fill(first_free, element + new_size, t);
}
else
{
T *p = first_free;
while(p != element + new_size)
alloc.destroy(--p);
}
first_free = element + new_size;
}//重新调正容器大小
int main()
{
return 0;
}
template <typename T>
void Vector<T>::resize( size_type new_size, const T &t )
...