亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? buffer.h

?? 整理分享:常用的數學運算程序源代碼 包括常用的幾種數學運算程序的C++代碼
?? H
字號:
#ifndef BUFFER_H
#define BUFFER_H

// 功能:定義數據緩沖區各抽象類

#ifndef DOUBLE

#define DOUBLE double
// #define DOUBLE long double  // 如double精度不夠,則可將此行去注釋,而將上行注釋
				// 即可得到更精確的結果
#endif // DOUBLE

#include <stdio.h>

extern DOUBLE defaulterr;	// 缺省的誤差標準,為十的負八次方
extern int doadjust;		// 邏輯變量,為1則作調整,否則不作,缺省為1
DOUBLE adjust(DOUBLE & a);  // 將實數調整為最靠近的小數點后二位數

class buffer {  // 定義抽象的雙精度實數緩沖區類,此類以一維數組的形式專門存儲大量的
		// 雙精度實數,而存儲方式則由子類實現,即可以用內存,也可以用磁盤
		// 空間,甚至服務器上的存儲空間
 public:
	size_t refnum;	// 引用數,一個緩沖區可能有多個矩陣同時引用它,
			// 主要是在矩陣變量賦值導致多個矩陣具有同樣的內容時
			// 防止數據的大量拷貝,而引用數就說明現在有多少個
			// 矩陣正在引用這個緩沖區
	buffer():refnum(1){};		// 構造函數,預設引用數為1
	virtual void alloc(size_t num)=0;  // 申請容量為num的存儲空間,或將緩沖區容量
					//改為num,純虛函數,子類必須實現
	virtual void release()=0;	// 釋放占用的存儲空間
	virtual DOUBLE& retrieve(size_t n)=0;  // 取出第n個雙精度實型數據,n從0開始計算
	virtual buffer* clone()=0; // 克隆出一個和自己類別一樣,內容也一樣的新的緩沖區,
				// 為純虛函數,子類必須實現
	virtual buffer* newbuf(size_t n=0)=0; // 產生一個新的和自己類別一樣的具有指定
					// 尺寸的緩沖區,
	DOUBLE & operator[](size_t n){	// 重載數組操作符(), 檢索第n個字節的內容
		return retrieve(n);};
	virtual size_t len()=0;		// 返回數組的長度,純虛函數,必須由子類
					// 實現
	buffer* set(size_t n, DOUBLE d);
	// 將實數緩沖區的第n個實數的值設為d,并返回一個實數緩沖區的
	// 指針,此指針一般就是指向自己,而在一個緩沖區的引用數多于一個時
	// 此函數將先克隆出一個新的緩沖區,此新的緩沖區的引用數為1,并對此
	// 新的緩沖區的第n個實數的值設為d,然后返加新緩沖區的指針
	friend ostream& operator<<(ostream& o, buffer& b);
};

ostream& operator<<(ostream& o, buffer& b);
buffer * getnewbuffer(size_t n=0);  // 生成一個新的尺寸為n個實數的緩沖區,返回新產生的
				// 緩沖區的指針,新產生的緩沖區的類別與下面的
				// defbuffer指針指向的緩沖區的類別一致
extern buffer *defbuffer;	// 指向buffer子類的變量,作為產生新的緩沖區的缺省類別
void settomemory(); // 將defbuffer指向內存類,這以后再調用getnewbuffer將產生內存類的
		// 實數數組,即數組全部放在內存中
void settodisk(); // 將defbuffer指向磁盤類,這以后再調用getnewbuffer將產生數據存放在文件
		// 中的實數數組,即數組全部放在數據文件中

class membuffer : public buffer { // 一維的存放在內存中的雙精度實數數組,請注意在DOS
			// 操作系統下將受到64k內存段容量限制,而如果在win95以上
			// 操作系統中用32位編譯則沒有這個限制。如果要在DOS下使用
			// 擴展內存或擴充內存,可以另外編寫buffer的子類
 public:
	DOUBLE * buf;	// 指向存放雙精度實數數據的內存緩沖區的指針
	size_t length;	// 數組的以實數個數計的長度
	membuffer():buffer(),buf(0),length(0){}; // 構造函數,產生一個容量為0的實數緩沖區
	membuffer(size_t lth):buffer(),length(lth){ // 構造函數,產生長度為lth的實數緩沖區
		if(lth > 0)
			buf = new DOUBLE[lth];
		else buf = 0; };
	~membuffer(){delete buf;}  // 析構函數,釋放緩沖區
	void alloc(size_t num){  // 將緩沖區的容量改為num個實數,原來的內容全部刪去
		delete []buf;
		length = num;
		buf = new DOUBLE[num]; };
	DOUBLE& retrieve(size_t n){ // 返回第n個字節,n的范圍從0到length-1
		return buf[n]; };
	void release() { delete []buf; length = 0; };  // 釋放內存,數組的長度變為0
	buffer* clone(); // 克隆自己
	buffer* newbuf(size_t n=0){ // 產生一個長度為n的與自己同類別的新緩沖區并返回
				// 相應的指針
		return new membuffer(n);};
	size_t len(){return length;}; // 返回數組的長度
};

class diskbuffer : public buffer { // 磁盤實數緩沖區類,將實數數組存放在臨時文件中
 public:
	DOUBLE buf;	// 臨時文件取出來的實數放在buf里
	size_t length;	// 緩沖區的長度,或者實數的個數
	size_t n;	// 當前的buf中存放的是第n個實數,也以此知道臨時文件的當前指針位置
	FILE * tempfp;    // 指向臨時文件的指針
	diskbuffer():buffer(),buf(0.0),length(0),tempfp(0),n(0){}; // 缺省構造函數,產生長度為0的
				// 磁盤實數緩沖區
	diskbuffer(size_t lth);	// 構造函數,產生長度為lth的磁盤實數緩沖區
	~diskbuffer();		// 析構函數,關閉并刪除臨時文件
	void alloc(size_t num);	// 將緩沖區的尺寸重定為num
	DOUBLE& retrieve(size_t n);	// 檢索出文件的第n個實數放在buf中并返回buf的引用
				// 在檢索之前先把當前的buf中的內容放回到文件中
	void release();		// 釋放空間
	buffer* clone(); // 克隆自己
	buffer* newbuf(size_t n=0){return new diskbuffer(n);}; // 產生一個新的磁盤實數緩沖區
	size_t len(){return length;}; // 獲得數組的長度
};

class lbuffer {	// 長整數緩沖區的抽象基類,用來存放許多個長整數
		// 繼承的子類可以使用各種數據載體,如內存或者文件來存放長整數
 public:
	size_t refnum;	// 緩沖區引用數,原理與buffer的相同
	lbuffer():refnum(1){};	// 缺省構造函數
	virtual void alloc(size_t num)=0; // 將緩沖區尺寸修改為num,原內容全部刪去
	virtual void release()=0; // 釋放緩沖區
	virtual long& retrieve(size_t n)=0; // 檢索第n個元素,并返回引用
	long & operator[](size_t n){ // 重載[]操作符,得到第n個元素,并返回引用
										// 但這樣調用有危險,要注意引用數為1時才可當左值
		return retrieve(n);};
	virtual lbuffer* clone()=0; // 克隆一個類別和內容與自己完全一樣的長整數緩沖區
	virtual lbuffer* newbuf(size_t n=0)=0; // 產生一個類別和自己一樣的長整數緩沖區
	virtual size_t len()=0; // 返回長度
	lbuffer* set(size_t n, long v); // 設置第n個元素的值為v,n的范圍是0到refnum-1
				// 如引用數大于1,則會產生新的緩沖區進行操作
				// 并返回新緩沖區指針
	friend ostream& operator<<(ostream& o, lbuffer& b);
};

ostream& operator<<(ostream& o, lbuffer& b);

class lmembuffer : public lbuffer { // 內存長整數緩沖區,DOS系統將受到64K段限制
 public:
	long * buf;	// 指向內存緩沖區的指針
	size_t length;	// 緩沖區長度
	lmembuffer():lbuffer(),buf(0),length(0){}; // 缺省構造函數,長度為0
	lmembuffer(size_t lth):lbuffer(),length(lth){ // 構造函數,lth為緩沖區長整數個數
		buf = new long[lth]; };
	~lmembuffer(){delete []buf;}	// 析構函數,釋放buf指向的內存
	void alloc(size_t num){ // 將緩沖區長度修改為num,原內容消失
		delete []buf;
		length = num;
		buf = new long[num]; };
	long& retrieve(size_t n){ // 返回第n個長整數,n取值從0到length-1
		return buf[n]; };
	void release() { delete []buf; length = 0; }; // 釋放內存,長度變為0
	lbuffer* clone(); // 克隆一個內容完全一樣的長整數緩沖區
	lbuffer* newbuf(size_t n=0){return new lmembuffer(n);}; // 產生一個新的尺寸為n的緩沖區
	size_t len(){return length;}; // 返回緩沖區的長度
};

class ldiskbuffer : public lbuffer { // 長整數磁盤緩沖區子類,將多個長整數存放在臨時文件內
 public:
	long buf;	// 當前的長整數
	size_t length; // 緩沖區長度,以長整數個數為單位
	size_t n;	// buf中的內容是第n個元素的內容,n也說明了臨時文件當前的指向
	FILE * tempfp; // 臨時文件指針
	ldiskbuffer():lbuffer(),buf(0),length(0),tempfp(0),n(0){}; // 缺省構造函數,長度為0
	ldiskbuffer(size_t lth); // 構造函數,lth為緩沖區長度
	~ldiskbuffer();	// 析構函數,將關閉和刪除臨時文件
	void alloc(size_t num); // 將緩沖區長度重新定為num
	long& retrieve(size_t nn); // 檢索第nn個元素放到buf中,在此之前先存放buf的內容到
			// n的位置,再將文件的指針移到nn處取元素
	void release();	// 釋放存儲空間
	lbuffer* clone();	// 克隆一個內容完全一樣的長整數磁盤緩沖區,但臨時文件不同
	lbuffer* newbuf(size_t nn=0){return new ldiskbuffer(nn);}; // 產生一個長度為nn的
			// 長整數磁盤緩沖區子類變量,返回它的指針
	size_t len(){return length;}; // 返回緩沖區長度
};

lbuffer * getnewlbuffer(size_t n=0); // 產生一個新的長整數緩沖區,子類的類別與下面的
		// deflbuffer指向的緩沖區的類別相同
extern lbuffer *deflbuffer; // 缺省的長整數緩沖區指針

char * throwmessage(int l, char * f, char * c); // 產生錯誤信息字符串

#ifndef __LINE__
#define __LINE__ 0
#define __FILE__ "n"
#endif
	//  l為行號,f為文件名,c為出錯信息,請不要直接調用,而是調用宏TMESSAGE
#define TMESSAGE(c) throwmessage(__LINE__,__FILE__,c)

#endif // BUFFER_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久毛片av大全日韩| 久久激情五月激情| 亚洲成a人v欧美综合天堂| 九一久久久久久| 色噜噜狠狠色综合欧洲selulu| 日韩视频国产视频| 午夜欧美一区二区三区在线播放| 国产夫妻精品视频| 欧美一区二区三区在线观看视频 | 欧美日韩极品在线观看一区| 久久久久久久久蜜桃| 日韩精品欧美成人高清一区二区| 成a人片国产精品| 久久一夜天堂av一区二区三区| 丝袜诱惑亚洲看片| 色综合久久综合中文综合网| 国产精品日日摸夜夜摸av| 国产欧美一区二区精品性色超碰| 成人av电影在线网| 精品国产制服丝袜高跟| 亚洲成在人线免费| 色综合一个色综合亚洲| 国产精品久久久久久久久动漫| 美腿丝袜亚洲色图| 日韩欧美中文字幕精品| 青青草国产精品97视觉盛宴| 欧美日韩国产成人在线免费| 一区二区三区在线视频播放 | 国产精品成人在线观看| 国产福利一区二区| 久久精品人人做人人爽人人| 国产真实精品久久二三区| 欧美v国产在线一区二区三区| 毛片av一区二区| 91.麻豆视频| 免费人成黄页网站在线一区二区| 91精品婷婷国产综合久久竹菊| 亚洲成人资源网| 欧美二区三区的天堂| 日韩黄色免费网站| 欧美成人三级电影在线| 激情综合网av| 国产精品色哟哟| 色综合天天综合色综合av| 亚洲在线中文字幕| 制服丝袜日韩国产| 一区二区三区四区国产精品| 日韩精品免费视频人成| 欧美一区午夜精品| 久99久精品视频免费观看| 久久久国产一区二区三区四区小说 | 波波电影院一区二区三区| 国产精品久久久久婷婷| 色噜噜夜夜夜综合网| 日韩激情视频在线观看| 久久这里只精品最新地址| 成人av动漫在线| 视频一区视频二区中文字幕| 久久综合色之久久综合| 99re热视频这里只精品| 日本午夜精品一区二区三区电影| 欧美精品一区二区久久久| 国产成人精品免费视频网站| 亚洲综合小说图片| 亚洲一二三区在线观看| 911精品国产一区二区在线| 精品综合久久久久久8888| 中文字幕一区在线| 91精品婷婷国产综合久久| 国产福利不卡视频| 亚洲国产欧美日韩另类综合| 久久综合久久久久88| 在线欧美日韩精品| 精品一区二区免费在线观看| 亚洲视频一区二区在线观看| 在线不卡免费欧美| www.激情成人| 久久99热99| 亚洲无人区一区| 成人欧美一区二区三区白人| 欧美一区二区三区电影| 91麻豆产精品久久久久久| 久热成人在线视频| 一区二区久久久| 国产亚洲综合在线| 91精品国产全国免费观看 | 国产很黄免费观看久久| 中文字幕永久在线不卡| 欧美videos大乳护士334| 日本道免费精品一区二区三区| 麻豆久久久久久久| 亚洲午夜在线视频| 综合分类小说区另类春色亚洲小说欧美| 欧美日韩在线直播| 91在线小视频| 成人影视亚洲图片在线| 国内成+人亚洲+欧美+综合在线| 亚洲一区二区三区四区中文字幕| 国产精品网友自拍| 国产亚洲污的网站| 精品国免费一区二区三区| 欧美久久久久久蜜桃| 91福利国产精品| 99精品欧美一区二区三区综合在线| 国产一区二区女| 韩国欧美国产1区| 六月丁香综合在线视频| 视频一区欧美日韩| 香蕉加勒比综合久久| 成人一级片网址| 午夜电影久久久| 亚洲嫩草精品久久| 成人欧美一区二区三区白人| 中文字幕av不卡| 国产精品不卡在线| 18欧美乱大交hd1984| 亚洲欧洲一区二区在线播放| 国产精品福利电影一区二区三区四区 | 精品乱码亚洲一区二区不卡| 91精品欧美福利在线观看| 欧美精品乱码久久久久久| 欧美性做爰猛烈叫床潮| 欧美日韩国产经典色站一区二区三区| 欧美亚洲国产怡红院影院| 欧美中文字幕亚洲一区二区va在线| 日本精品免费观看高清观看| 欧美三级在线视频| 91精品国产入口| 欧美精品一区二区三区视频| 久久久无码精品亚洲日韩按摩| 久久久久久免费| 国产精品卡一卡二| 夜夜爽夜夜爽精品视频| 亚洲一区欧美一区| 蜜桃视频免费观看一区| 国产中文字幕精品| av中文字幕亚洲| 欧美亚洲综合另类| 欧美一区二区人人喊爽| 国产日韩欧美电影| 亚洲精品成人悠悠色影视| 日韩黄色片在线观看| 国产精品一区三区| 在线精品视频免费观看| 日韩午夜激情免费电影| 日本一区二区不卡视频| 亚洲一区二区三区不卡国产欧美| 秋霞午夜av一区二区三区| 国产很黄免费观看久久| 91久久国产最好的精华液| 日韩一区二区三区在线观看| 国产日韩高清在线| 亚洲成a人在线观看| 国产在线精品视频| 91丨porny丨首页| 日韩一区二区精品在线观看| 国产精品毛片高清在线完整版| 亚洲国产一区二区在线播放| 国产成人av一区二区三区在线 | 国产精品综合视频| 在线影视一区二区三区| 久久视频一区二区| 亚洲成人免费影院| 成人精品在线视频观看| 欧美一卡二卡三卡| 亚洲精品自拍动漫在线| 国产精品一区在线| 91麻豆精品国产无毒不卡在线观看| 国产人伦精品一区二区| 婷婷丁香久久五月婷婷| av在线这里只有精品| 久久蜜桃av一区精品变态类天堂 | 久久亚洲春色中文字幕久久久| 亚洲视频一区在线观看| 精品亚洲aⅴ乱码一区二区三区| 色中色一区二区| 国产欧美日本一区二区三区| 日本aⅴ免费视频一区二区三区| 91在线porny国产在线看| 2024国产精品| 日本怡春院一区二区| 91久久精品网| 1024精品合集| 成av人片一区二区| 亚洲久草在线视频| 成人av网站大全| 国产欧美日韩不卡免费| 国产美女一区二区三区| 欧美大度的电影原声| 午夜影院久久久| 欧美情侣在线播放| 亚洲一区二区成人在线观看| 色94色欧美sute亚洲13| 亚洲三级在线免费观看| 99综合影院在线| 亚洲少妇30p| 一本到一区二区三区| 中文字幕在线视频一区| www.66久久| 欧美精品一区二区三区蜜桃视频 |