国产探花免费观看_亚洲丰满少妇自慰呻吟_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++實現,即在類中實現
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 凌云县| 紫金县| 临沧市| 驻马店市| 米易县| 海安县| 大余县| 彩票| 饶阳县| 台中县| 巍山| 隆安县| 山东省| 新河县| 台州市| 福安市| 永福县| 河东区| 阆中市| 宜城市| 无锡市| 盐津县| 肇源县| 宜良县| 吕梁市| 乡城县| 本溪| 苍南县| 苏尼特右旗| 朔州市| 龙胜| 金湖县| 和顺县| 北票市| 苗栗县| 大渡口区| 黄大仙区| 湖南省| 清新县| 无为县| 利津县|