C++技巧之二維動態數組類模板

C++提供了許多強大的機制來實現代碼的高度複用、來使我們使用我們自已的類就像使用內建類型那樣方便快捷。比如模板,運算子多載等等。模板好比如是一個大批量生產函數和類的工廠,使我們不用再去關心與資料類型相關的繁瑣編程細節,把我們精力留給那些真正值得我們去認真思考的地方。而運算子多載則使我們的程式更直觀更簡潔,這不僅使我們更容易讀懂我們的程式,而且使我們能以一種更為流暢的方式來表達我們的想法。就像上篇文章說到的,如果我們把動態分配的二維數組用類模板實現,並重載相應的操作符,我們就能十分方便的使用我們自

C語言基礎教程(三)輸入輸出函數及控制流程程語句(5)

1.1.2 非格式化輸入輸出函數非格式化輸入輸出函數可以由上面講述的標準格式化輸入輸出函數代替,但這些函數編譯後代碼少,相對佔用記憶體也小,從而提高了速度,同時使用也比較方便。下面分別進行介紹。 一、puts()和gets()函數1. puts()函數puts()函數用來向標準輸出裝置(螢幕)寫字串並換行,其調用格式為:puts(s);其中s為字串變數(字串數組名或字串指標)。puts()函數的作用與語printf("%s\n", s)相同。例4: main(){ char

C語言基礎教程(三)輸入輸出函數及控制流程程語句(4)

二、scanf()函數scanf()函數是格式化輸入函數,它從標準輸入裝置(鍵盤)讀取輸入的資訊。其調用格式為:scanf("<格式化字串>", <地址表>);格式化字串包括以下三類不同的字元; 1. 格式化說明符:格式化說明符與printf()函數中的格式說明符基本相同。2. 空白字元: 空白字元會使scanf()函數在讀操作中略去輸入中的一個或多個空白字元。3. 非空白字元:

C語言基礎教程(三)輸入輸出函數及控制流程程語句(3)

2.一些特殊規定字元━━━━━━━━━━━━━━━━━━━━━━━━━━ 字元 作用 ────────────────────────── \n 換行 \f 清屏並換頁 \r 斷行符號 \t Tab符 \xhh 表示一個ASCII碼用16進表示, 其中hh是1到2個16進位數━━━━━━━━━━━━━━━━━━━━━━━━━━ 由本節所學的printf()函數, 並結合上一節學習的資料類型,編製下面的程式,以加深對Turbo

C語言基礎教程(三)輸入輸出函數及控制流程程語句(2)

1.格式化規定符Turbo C2.0提供的格式化規定符如下:━━━━━━━━━━━━━━━━━━━━━━━━━━ 符號 作用 ────────────────────────── %d 十進位有符號整數 %u 十進位不帶正負號的整數 %f 浮點數 %s 字串 %c 單個字元 %p 指標的值 %e 指數形式的浮點數 %x, %X 無符號以十六進位表示的整數 %0 無符號以八進位表示的整數

C語言基礎教程(二)資料類型、變數和運算子(19)

四、sizeof運算子sizeof運算子是一個單目運算子, 它返回變數或類型的位元組長度。 例如: sizeof(double) 為8 sizeof(int) 為2 也可以求已定義的變數, 例如: float f; int i; i=sizeof(f); 則i的值將為4。 五、聯合操作 Turbo C中有一特殊的簡寫方式, 它用來簡化一種指派陳述式,適用於所有的雙目運算子。其一般形式為: <變數>=<變數><運算元><運算式> 相當於 &

C語言基礎教程(二)資料類型、變數和運算子(18)

5.4 Turbo C的特殊運算子 一、"?"運算子 "?"運算子是一個三目運算子, 其一般形式是: <運算式1>?<運算式2>:<運算式3>; "?"運算子的含義是: 先求運算式1的值,如果為真,則求運算式2 的值並把它作為整個運算式的值;如果運算式1的值為假,則求運算式3的值並把它作為整個運算式的值。例如: main() { int x, y; x=50; y=x>70?100:0; }

C++語言設計可擴充線程池

在各種業務解決方案的設計過程中,伺服器處理任務的效率往往決定了方案的成敗。多執行緒任務是提高伺服器效率的主要手段,它提高了對伺服器資源的利用,使得任務可以並發處理。但如果伺服器處理的任務的特點是輕量級、頻率高,那麼線程的建立與銷毀會非常頻繁,而系統用於處理線程的建立與銷毀的開銷會佔相當大的比重,反而降低了系統的效率。通過線程池技術,可以減少頻繁的線程的建立與銷毀對系統效能的影響。線程池是預先建立線程的一種技術。線程池在還沒有任務到來之前,建立一定數量(N1)的線程,放入空閑隊列中。這些線程都是處

C#中列印A4紙的實現

在VB中,如果要列印列印A4文檔,且內容是從DB中,或者DataGrid中等動態擷取的,實現起來非常簡 單,諸如以下代碼(rs表示一記錄集):  rs.MoveFirst  Printer.PaperSize = vbPRPSA4  Printer.Orientation = vbPRORPortrait  Printer.FontName = "Courier New"  Printer.FontBold = True  Printer.FontSize =

C++中通過模板向函數傳遞數組長度

我們知道,在C/C++中,向一個函數傳遞數組時,實際上傳送的是這個數組的首地址,也即是一個指標類型。所以,在函數中,我們沒有辦法知道這個傳遞進來的數組的長度到底為多長,一個普遍的方法就是再增加一個參數,來記錄傳遞進來的數組的長度。不過在C++中,使用模板機制,可以很好地解決這個問題,如下面的代碼所示:#include <iostream>using namespace std;template<class T, int N>void array(T

C語言基礎教程(二)資料類型、變數和運算子(3)

1. 資料類型在Turbo C語言中, 每個變數在使用之前必須定義其資料類型。Turbo C有以下幾種類型: 整型(int)、浮點型(float)、字元型(char)、指標型(*)、無值型(void)以及結構(struct)和聯合(union)。其中前五種是Turbo C的基礎資料型別 (Elementary Data Type)、後兩種資料類型(結構和聯合)將在第五章介紹。2.1 整型(int) 一、整型數說明 加上不同的修飾符, 整型數有以下幾種類型; signed short

C/C++的資料類型介紹

C語言套件含5個基礎資料型別 (Elementary Data Type): void, integer, float, double, 和 char. 類型 描述 void 空類型 int 整型 float

C語言學習教程第八章-枚舉、位元運算(5)

二、位域的使用位域的使用和結構成員的使用相同,其一般形式為: 位域變數名·位網域名稱 位域允許用各種格式輸出。main(){struct bs{unsigned a:1;unsigned b:3;unsigned c:4;}

C++高精度實現10000位元字的乘除法

說明:做了個計算機,本來是要上傳整個項目的,但突然發現不能上傳資源了,就貼出來 演算法部分的代碼,大家多多指點啊,呵呵,比較難讀,以後再上傳整個項目,呵呵//轉換,供乘法部分調用int turn(char s[], int num[]){ int i = 0, len, j; while(1) {  if(s[i] == 0) break;  else if(s[i] == '-' || s[i] == '0') i++;  else break; } //i指向第一個非零數字 for (j =

C++的預設建構函式

1、每個類必須有一個建構函式,否則沒法建立對象;2、若programer沒有提供任何建構函式,則C++提供一個預設的建構函式,該預設構造函 數是無參建構函式,它僅負責建立對象,不做任何初始化的工作;3、只要programer定義了一個建構函式(不管是無參還是有參構造),C++就不再提供默 認的預設建構函式。即如果為類定義了一個帶參的建構函式,還想要無參建構函式,就必須 自己定義;4、與變數定義類似,在用預設建構函式建立對象時,如果建立的是全域對象或靜態對象

C語言學習教程第六章-指標(5)

使用字串指標變數與字元數組的區別用字元數組和字元指標變數都可實現字串的儲存和運算。 但是兩者是有區別的。在使用時應注意以下幾個問題:1. 字串指標變數本身是一個變數,用於存放字串的首地址。而字串本身是存放在以該首地址為首的一塊連續的記憶體空間中並以‘\0’作為串的結束。字元數組是由於若干個數組元素組成的,它可用來存放整個字串。2. 對字元數組作初始化賦值,必須採用外部類型或靜態類型,如: static char st[]={“C Language”

C標準類型的長度bytes

WIN2K/VC下面:[char] Size Total:1[int] Size Total:4[long int] Size Total:4[float] Size Total:4[double] Size Total:8[long double] Size Total:8[double point]Size Total:4[char point] Size Total:4WIN2K/dev-c++下面 &Ubuntu8.10 gcc 下面:[char] Size

C++必知必會(五) 引用是別名而非指標

引用(reference)是一個現有對象的別名。用對象來初始化引用之後,那麼對象的名字或引用的名字都可以用於指向(refer to)該對象:int a = 12;int &ra = a;--ra; // a == 11;a = 10; // ra = 10;int *ip = &ra;人們常常會將引用和指標相混淆,原因大概在於C++編譯器通常採用指標的方式實現引用,但引用其實不是指標,其行為和指標並不相同。在引用和指標之間存在三大區別:其一,不存在Null 參考(NULL

C++必知必會(二) 多態

多態(Polymorphism)在一些編程教程中被弄得很神秘,而在另外一些教程中則被忽略,其實它不過是C++語言所支援的一個簡單而有用的概念。按照C++標準所言,"多態類型(Polymorphic type)”就是帶有虛函數的類類型。從設計的角度來看,"多態對象(Polymorphic object)"就是一個具有不止一種類型的對象,而"多態基類(Polymorphic base

C語言基礎教程(三)輸入輸出函數及控制流程程語句(9)

二、有關檔案操作的函數本節所講的檔案讀寫函數均是指順序讀寫,即讀寫了一條資訊後,指標自動加1。下面分別介紹寫操作函數和讀操作函數。 1.檔案的順序寫函數fprintf()、fputs()和fputc()函數函數fprintf()、fputs()和fputc()均為檔案的順序寫操作函數,其調用格式如下: int fprintf(FILE *stream, char *format, <variable-list>);int fputs(char *string, FILE

總頁數: 4314 1 .... 530 531 532 533 534 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.