国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

順序表-----C++實現

2019-11-06 08:04:41
字體:
來源:轉載
供稿:網友
#include<assert.h>
#include<stdio.h>#include<stdlib.h>#include<iostream>using namespace std;#define DataType intclass Vector{public:	Vector()		:_pData(new DataType[3])		,_capacity(3)		,_size(0)	{}	Vector(const Vector& v)		:_pData(new DataType[v._capacity])		,_capacity(v._capacity)		,_size(v._size)	{		//memcpy(_pDate,v._pDate);		for(size_t idx=0;idx<_size;idx++)		{			_pData[idx]=v._pData[idx];		}	}	Vector& Operator=(const Vector& v)	{		DataType* pTemp=new DataType[v._capacity];		for(size_t idx=0;idx<v._capacity;idx++)		{			pTemp[idx]=v._pData[idx];		}		delete[] _pData;		_pData=pTemp;		_capacity=v._capacity;		_size=v._size;		return *this;	}	void PushBack(const DataType& data)	{		_CheckCapacity();		_pData[_size++]=data;	}	void PopBack()	{		//assert(0 == _size);		if(_size==0)		{			return;		}		--_size;	}	void Insert(size_t pos, const DataType& data)	{	if((_size-1)==pos)		{			PushBack(data);		}		else		{			_size+=1;			_CheckCapacity();			for(size_t idx=_size-1;idx>pos;idx--)			{				_pData[++idx]=_pData[idx];			}			_pData[pos+1]=data;		}	}	void Erase(size_t pos)	{		size_t ret=_size;		if((--ret)==pos)		{			PopBack();		}else if(0==pos)		{			DataType* pTemp=new int[_capacity];			for(size_t idx=1;idx<_size;idx++)			{				pTemp[idx-1]=_pData[idx];			}			delete[] _pData;			_pData =pTemp;			--_size;		}		else		{			for(size_t idx=pos+1;idx<_size;idx++)			{				_pData[idx-1]=_pData[idx];			}			--_size;		}	}	void Assign(size_t n, const DataType& data)	{		_size=n;		_CheckCapacity();		DataType* pTemp=new DataType[_capacity];		for(size_t idx=0;idx<n;idx++)		{			pTemp[idx]=data;		}		delete[] _pData;		_pData = pTemp;	}	int Find(const DataType& data)	{		for(size_t idx=0;idx<_size;idx++)		{			if(_pData[idx]==data)			{				return idx;			}		}		return -1;	}	////////訪問元素//////////////////	DataType& Front()	{		assert(_pData);		return _pData[0];	}	const DataType& Front()const	{		assert(_pData);		return _pData[0];	}	DataType& Back()	{		assert(_pData);		return _pData[_size-1];	}	const DataType& Back()const	{		assert(_pData);		return _pData[_size-1];	}	DataType& operator[](size_t index)	{		assert(index<_size);		return _pData[index];	}	const DataType& operator[](size_t index)const	{		assert(index<_size);		return _pData[index];	}	DataType& At(size_t index)	{		assert(index<_size);		return _pData[index];	}	const DataType& At(size_t index)const	{		assert(index<_size);		return _pData[index];	}		//////////容量///////////////////	size_t Size()const	{		return _size;	}	size_t Capacity()const	{		return _capacity;	}	bool Empty()const	{		if(0==_size)		{			return true;		}		return false;	}	void ReSize(size_t n, const DataType& data = DataType())	{		if(n<=_size)		{			_size = n;		}		else		{			size_t ret = _size;			_size = n;			_CheckCapacity();			for(size_t idx=ret;idx<n;idx++)			{				_pData[idx] = data;			}		}	}	void Clear()	{		_size=0;	}	~Vector()	{		if(NULL != _pData)		{			delete[] _pData;			_pData=NULL;			_capacity=0;			_size=0;		}	}PRivate:	void _CheckCapacity()	{		if(_size>=_capacity)		{			DataType* pTemp=new DataType[2*_capacity];			for(size_t idx=0;idx<_size;idx++)			{				pTemp[idx]=_pData[idx];			}			delete[] _pData;			_pData = pTemp;			_capacity=2*_capacity;		}	}private:	DataType* _pData;	size_t _capacity;	size_t _size;};void funtest(){	Vector v1;	v1.PushBack(1);	v1.PushBack(2);	v1.PushBack(3);	int a=3;	int ret=v1.Find(a);	/*v1.Erase(1);*/	//v1.Insert(2,7); 	//v1.PopBack();	/*v1.ReSize(5,10);	int ret = v1.At(4);*/}int main(){	funtest();	return 0;}以上為動態順序表C++實現,即在類中實現
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 广灵县| 通化县| 和静县| 岑巩县| 两当县| 安塞县| 玉林市| 普兰店市| 银川市| 沙洋县| 蕲春县| 象州县| 晴隆县| 错那县| 贵德县| 九龙城区| 巴彦县| 武乡县| 临夏县| 星子县| 阿巴嘎旗| 塘沽区| 德昌县| 邢台县| 新乡县| 马公市| 高雄县| 台北市| 吐鲁番市| 海盐县| 田林县| 新竹县| 阿合奇县| 元朗区| 安仁县| 上杭县| 苗栗市| 五台县| 凤阳县| 堆龙德庆县| 莲花县|