亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

C++模板類實現順序表

2019-11-06 09:29:17
字體:
來源:轉載
供稿:網友
#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;#include <assert.h>#define length 10typedef int DataType;class Vector{public:	// 構造函數	explicit Vector(size_t capacity = 100)       //若不給缺省值,注意初始化的順序		:_pData(new DataType[_capacity])     //因為_pData的初始化對使用_capacity		, _size(0)		, _capacity(100)	{ }	// 構造函數--有size個值為data的元素	Vector(size_t n, const DataType& data)	{		_size = n;		_capacity = 100;		_pData = new DataType[length];		size_t i = 0;		for (; i < _size; i++)		{			_pData[i] = data;		}	}	//拷貝構造函數	Vector(const Vector& v)		: _capacity(v._capacity)                             		, _size(v._size)	                                 	{                                                        		_pData = new DataType[v._capacity];		for (size_t idx = 0; idx < _size; ++idx)			_pData[idx] = v._pData[idx];	}	//析構函數	~Vector()	{		delete[] _pData;		_pData = NULL;		_size = 0;		_capacity = 0;	}	// = 的重載函數	Vector& Operator=(const Vector& v)	{		_pData = new DataType[v._capacity];		_size = v._size;		for (int i = 0; i < (int)_size; i++)		{			_pData[i] = v._pData[i];		}		return *this;	}	//尾插函數	void PushBack(const DataType& data)	{		if (_size < _capacity)		{			_pData[_size] = data;			_size++;		}		else		{			int i = 0;			DataType* tmp = new DataType[_capacity + length];			for (; i < (int)_size; i++)			{				tmp[i] = _pData[i];			}			tmp[i] = data;			_size = i;			_pData = tmp;			delete[] tmp;			tmp = NULL;		}	}	//尾刪函數	void PopBack()	{		if (_pData)		{			if (_size > 1)			{				_size--;			}			else			{				delete[] _pData;				_size = 0;			}		}	}	//插入指定位置、指定數據函數	void Insert(size_t pos, const DataType& data)               //注意下標和_size的 	{		assert(pos > 0 && pos <= _size);		int idx = 0;		if (_size >= _capacity)       //插入時順序表已滿,則開辟更大的空間繼續插入		{			int i = 0;			DataType* tmp = new DataType[_capacity + length];			for (; i < (int)_size; i++)			{				tmp[i] = _pData[i];			}			_pData = tmp;			delete[] tmp;			tmp = NULL;		}		size_t tmp = _size;		for (tmp; tmp >= pos; tmp--)		{			_pData[tmp] = _pData[tmp - 1];		}		_pData[pos - 1] = data;		_size++;	}	//刪除指定節點函數	void Erase(size_t pos)	{		size_t tmp = _size;		if (_size > 0)		{			int idx = 0;			for (pos; pos < tmp; pos++)			{				_pData[pos-1] = _pData[pos];			}			_size--;		}	}	//查找函數	int Find(const DataType& data)const            
 //注意下標和_size的關系{int idx = 0;for (idx = 0; idx < (int)_size; idx++){if (data == _pData[idx]){break;}}return idx + 1;}//清空函數void Clear(){_size = 0;_capacity = 0;delete[] _pData;_pData = NULL;}//求長度函數size_t Size()const{return _size;}//給當前順序表上加上size個data數據void ReSize(size_t size, const DataType& data = DataType()){size_t max = _size + size;for (_size; _size < max; _size++){_pData[_size] = data;}}//求最大容量函數size_t Capacity()const{return _capacity;}//判空函數bool Empty()const{if (0 == _size)return true;elsereturn false;}//返回第一個節點的數據DataType& Front(){if (_size > 0){return _pData[0];}}const DataType& Front()const{if (_size > 0){return _pData[0];}}//返回最后一個節點的數據DataType& Back(){if (_size > 0){return _pData[_size-1];}}const DataType& Back()const{if (_size > 0){return _pData[_size - 1];}}//置數函數void Assign(size_t n, const DataType& data = DataType()){int idx = 0;for (idx=0; idx < (int)n; idx++){_pData[idx] = data;}_size = idx;}//[]的重載函數DataType& operator[](size_t index){if (_size > 0){return _pData[index];}}const DataType& operator[](size_t index)const{if (_size > 0){return _pData[index];}}DataType& At(size_t index){if (_size > 0){return _pData[index];}}const DataType& At(size_t index)const{if (_size > 0){return _pData[index];}}PRivate://判斷容量是否已滿bool _CheckCapacity(){if (_size < _capacity){return true;}elsereturn false;}// <<的重載函數friend std::ostream& operator<<(std::ostream& _cout, const Vector& v);private:DataType* _pData;size_t _capacity;size_t _size;};std::ostream& operator<<(std::ostream& os, const Vector& v){int idx = 0;for (idx = 0; idx < (int)v._size; idx++){os << v._pData[idx];cout << " ";}return os;}int main(){Vector v1(5,1);v1[1] = 2;v1[2] = 3;v1[3] = 4;v1[4] = 5;Vector v2;v2 = v1;Vector v3(v1);cout << "v1 = " << v1 << endl;cout << "v2 = " << v2 << endl;cout << "v3 = " << v3 << endl;
        //以下都是對上述代碼邏輯的實驗:	v1.PushBack(6);	cout << "v1尾插6" << endl;	cout << "v1 = " << v1 << endl;	v2.PopBack();	cout << "v2尾刪一個數" << endl;	cout << "v2 = " << v2 << endl;	cout << "v2在第二個位置插上數據‘0’"<< endl;	v2.Insert(2, 0);	cout << "v2 = " << v2 << endl;	cout << "v2刪除第三個位置上的數據‘2’" << endl;	v2.Erase(3);	cout << "v2 = " << v2 << endl;	cout << "在v1中查詢數據‘2’的位置并返回" << endl;	v1.Find(2);	cout << "v1中數據‘2’的位置位為:" << v1.Find(2) << endl;	cout << "清空v3的數據" << endl;	v3.Clear();	cout << "v3 = " << v3 << endl;	cout << "v1的長度為:" << v1.Size() << endl;	v2.ReSize(3, 6);	cout << "給v2上加 3 個 6 " << endl;	cout << "v2 = " << v2 << endl;	cout << "v1的最大容量:" << v1.Capacity() << endl;	cout << "返回v1的第一個數據:" << v1.Front() << endl;	cout << "返回v1的最后一個數據:" << v1.Back() << endl;	system("pause");	return 0;

}

// 本博客中如有任何不準確之處請在評論區留言,我會及時更正


上一篇:C++ 注意點

下一篇:C++知識點

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一网站免费视频| 亚洲美女性视频| 欧美精品在线观看91| 国产视频在线观看一区二区| 久久精品视频一| 欧美激情第一页xxx| x99av成人免费| 国产精自产拍久久久久久蜜| 亚洲女人被黑人巨大进入al| 国产亚洲美女精品久久久| 亚洲丝袜av一区| 夜夜躁日日躁狠狠久久88av| 日韩欧美中文字幕在线播放| 亚洲福利在线看| 夜色77av精品影院| 精品亚洲夜色av98在线观看| 亚洲精品国精品久久99热一| 国产午夜一区二区| 日韩欧美精品中文字幕| 国产在线播放不卡| 久久福利视频导航| 欧美激情在线狂野欧美精品| 一区二区成人精品| 亚洲精品在线看| 欧洲永久精品大片ww免费漫画| 亚洲精品色婷婷福利天堂| 亚洲欧美日韩国产成人| 亚洲性av网站| 亚洲成年人在线播放| 久久艳片www.17c.com| 国产日韩在线视频| 欧美最猛黑人xxxx黑人猛叫黄| 欧美亚洲一级片| 国产91|九色| 亚洲成avwww人| 亚洲精品视频二区| 国产精品久久97| 国产91对白在线播放| 国产亚洲欧洲黄色| 欧美日韩人人澡狠狠躁视频| 国外成人在线播放| 538国产精品视频一区二区| www国产91| 亚洲人成在线观| 动漫精品一区二区| 国产精品视频白浆免费视频| 亚洲国产精品电影在线观看| 精品一区二区三区四区在线| 综合欧美国产视频二区| 在线成人中文字幕| 中文字幕国内精品| 亚洲一区二区在线播放| 欧美夫妻性视频| 97欧美精品一区二区三区| 日韩一中文字幕| 亚洲欧美日韩区| 欧美在线视频播放| 成人黄色生活片| 亚洲a级在线观看| 国产亚洲精品91在线| 久久综合电影一区| 亚洲精品久久久久久久久久久久| 日韩精品在线免费观看| 日韩美女在线看| 欧美性猛交xxxx乱大交蜜桃| 成人有码视频在线播放| 国产精品私拍pans大尺度在线| 亚洲v日韩v综合v精品v| 亚洲国产天堂久久综合| 亚洲影视九九影院在线观看| 亚洲成人a**站| 国产精品欧美久久久| www国产精品视频| 亚洲一区二区三区成人在线视频精品| 日韩av综合中文字幕| 国产精品小说在线| 日韩美女av在线免费观看| 久久99国产精品久久久久久久久| 中文字幕亚洲图片| 久久亚洲影音av资源网| 色多多国产成人永久免费网站| 亚洲成色777777女色窝| 欧美老女人性视频| 国产一区二区三区视频免费| 久热精品视频在线观看| 国产精品欧美亚洲777777| 成人激情春色网| 爽爽爽爽爽爽爽成人免费观看| 亚洲免费电影在线观看| 久久成人av网站| 菠萝蜜影院一区二区免费| 国产在线观看一区二区三区| 国产日韩欧美成人| 国产精品福利在线观看网址| 亚洲伊人第一页| 91影院在线免费观看视频| 欧美日韩国产91| 国产偷国产偷亚洲清高网站| 中文字幕亚洲欧美日韩在线不卡| 亚洲精品美女免费| 国产欧美日韩精品丝袜高跟鞋| 亚洲区bt下载| 中文字幕精品一区久久久久| 国产精品日日摸夜夜添夜夜av| 欧美国产日韩一区二区在线观看| 亚洲电影免费在线观看| 国产亚洲欧美日韩美女| 日韩一区二区在线视频| 国产一区二区三区视频| 高跟丝袜一区二区三区| 国产成人精品免费久久久久| 日本一区二三区好的精华液| 亚洲精品电影久久久| 亚洲专区中文字幕| 免费91麻豆精品国产自产在线观看| 欧美三级欧美成人高清www| 美女久久久久久久| 欧美性猛交xxxx久久久| 亚洲视频777| 国产成人精品免高潮费视频| 欧美亚洲国产另类| 亚洲午夜av电影| 日韩av影视综合网| 欧美性猛交xxxxx免费看| 欧美风情在线观看| 欧美激情在线观看视频| 欧美国产在线视频| 欧美极品美女电影一区| 91久久在线观看| 91视频国产高清| 国产成人精品一区二区在线| 欧美黄色www| 欧美成人黑人xx视频免费观看| 国产欧美一区二区三区视频| 在线观看成人黄色| 亚洲石原莉奈一区二区在线观看| 中文字幕在线日韩| 国产精品欧美日韩久久| 91九色国产在线| 欧美高清在线视频观看不卡| 亚洲国产一区二区三区四区| 欧美性生交大片免费| 亚洲日韩中文字幕在线播放| 日韩精品视频观看| 2021国产精品视频| 亚洲精品久久久久| 在线播放亚洲激情| 国内精品久久久久久| 日本高清+成人网在线观看| 亚洲欧洲在线看| 中文字幕亚洲综合| 国产精品久久久久高潮| 成人午夜激情网| 久久久久久免费精品| 亚洲成人激情在线观看| 亚洲成人国产精品| 91免费观看网站| 欧美激情一区二区三级高清视频| 免费av在线一区| 久久视频在线直播| 日本成人黄色片| 欧美体内谢she精2性欧美| 久久久久久久久久久亚洲| 久久精品成人欧美大片|