類模板表示陣列中元素數量的兩種方式

2021-09-24 15:54:19 字數 1098 閱讀 9757

模板常用作容器類,為容器類提供可重用**是引入模板的主要動機。

在類中使用動態陣列和構造函式引數來提供元素數目(如模板類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 效果是一樣的,其實是求位址,但是為...