有关模板类----实现Vector的类模板

本文探讨模板在C++中的作用,重点讲解类模板的概念,区分类模板和模板类,并通过实例展示了如何实现Vector模板,强调其在提高程序效率和内存管理上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由上一篇的文章中 ,我们已经知道,模板是一个代码生成器,可以极大效率提高我们的工作效率,实现让编译器为我们产生代码的机制

在C++面向对象中,我们在对类的使用上,已经达到了最少80%了,因此,模板类的使用,将极大的提高程序的运行效率,节省程序的运行时间。

(一)概念区分

类模板也称类属类或类生产类,允许用户为类定义一种模式,使得类中的某些数据成员,默写成员函数的参数,某些成员参数的返回值,能够取任意类型(包括系统预定义和用户自定义),如果一个类中数据成员的数据类型不能确定,或者是某个成员函数的参数返回值的类型不能确定,就必须将此类声明为模板,他的存在不是代表一个具体的,实际的类,而是代表一类类。

类模板由三种类型的模板参数:类型模板参数,非类型模板参数和模板的模板参数。

模板类:是类模板实例化的的一个产物,可以从类模板派生出新的类,既可以派生类模板,也可以派生非类模板,模板类的重点是类表示由一个模板生成而来的类,模板类与平台无关,具有可移植性,可用于基本数据类型,可用来创建动态增长和减小的数据结构。

模板类的实例化:只要有一种不同的类型,编译器就会实例化出一个对应的类。

(二)有关Vector模板的实现

Vector:是用来连续的存储数据的,类似于顺序表,在其中任意位置的插入或者删除的效率比较低,但是对内存碎片存在的就比较少,在某些情况下,对内存的使用率比较好。

#define _CRT_SECURE_NO_WARNINGS 1

//注:memcpy会出现浅拷贝的问题,因此在拷贝元素时,应该慎用

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
#include<assert.h>

using namespace std;

template<typename T>
class Vector
{
public:
	Vector()//构造函数,顺序表为空
		:_start(0)
		, _finish(0)
		, _endOfStorage(0)
	{}

	Vector(const T*arr, size_t size);//声明,顺序表中已经存放元素

	Vector(const Vector& t) //拷贝构造函数
	{
		size_t size = t.Size();
		_start = new T[size];
		for (size_t i = 0; i < size; ++i)
		{
			_start[i] = t._start[i];
		}
		_finish = _start + size;
		_endOfStorage = _finish;
	}

	Vector<T>&operator=(const Vector<T>&v)//赋值运算符的重载
	{
		if (this != &v)
		{
			size_t size = v.Size();
			_start = new T[size];
			for (size_t i = 0; i < size; ++i)
			{
				_start[i] = v._sta
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值