模板常用作容器類,為容器類提供可重用**是引入模板的主要動機。
在類中使用動態陣列和構造函式引數來提供元素數目(如模板類vector)
template
class stack
;int stacksize;
type * items;
public:
explicit stack
(int ss=size)
;//構造函式引數int ss提供陣列大小..
.};.
..template
stack::
stack
(int ss)
:stacksize
(ss)
使用模板引數來提供常規陣列的大小(如模板類array)
templateint n>
//模板引數int n提供陣列大小
class arraytp
; explicit arraytp
(const t &v);.
..};
...templateint n>
arraytp::
arraytp
(const t &v)
模板頭template
中,關鍵字class指出t為型別引數,int指出n的型別為int,這種引數稱為非型別引數或表示式引數。
下面的宣告arraytpeggweights;
將定義乙個名為arraytp的類,並建立乙個型別為arraytp的eggweights物件。
兩種方法比較
建構函式方法是使用new和delete管理的堆記憶體,而表示式引數方法使用的是為自動變數維護的記憶體棧,執行速度更快;
表示式引數法的主要缺點是,每種陣列大小都將生成自己的模板;
建構函式方法更通用,因為陣列大小是作為類成員(而不是硬編碼)儲存在定義中的,這樣可以將一種尺寸的陣列賦給另一種尺寸的陣列,也可以建立陣列大小可變的類。
05查詢陣列指定元素的兩種處理思路
public class test boolean flag false flag為定義的哨兵字元 system.out.println 輸出a陣列如下 for int i 0 i a.length i system.out.println scanner scanner new scanner s...
求最長的只含兩種元素的連續子陣列的長度(動態規劃)
題目說得挺複雜,但是實際上就是求出乙個連續子陣列,只含有兩種元素且長度最長,主要思路來自最大連續子陣列和演算法 動態規劃解釋 題目舉例 輸入 3,3,3,1,2,1,1,2,3,3,4 輸出 5 解釋 1,2,1,1,2 具體思路 記原陣列為a,定義和a等長的陣列b,陣列中的元素b i 表示的含義為...
比較C 陣列元素引用的兩種形式a 0 與0 a
於金慶的專欄 對於乙個陣列ar,求其最外層的維數。c語言當中慣用的是 sizeof ar sizeof ar 0 可是在stlsoft庫中是 sizeof ar sizeof 0 ar 以前從沒見過陣列元素引用使用這樣的形式 0 ar 能行嗎?ar 0 與0 ar 效果是一樣的,其實是求位址,但是為...