C 泛型程式設計之類模板案例

2021-10-25 02:14:14 字數 980 閱讀 9648

案例描述:實現乙個通用的陣列類。

要求如下:

1、可以對內建資料型別以及自定義資料型別的資料進行儲存

2、將陣列中的資料儲存到堆區中

3、建構函式中可以傳入陣列的容量

4、提供對應的拷貝建構函式以及operator=防止淺拷貝問題

5、提供尾插法和尾刪法對陣列中的資料進行增加和刪除

6、可以通過下標的方式訪問陣列中的元素

7、可以獲取陣列中當前元素個數和陣列的容量

總體思路:

1、建立乙個通用的模板陣列類。

類的私有屬性:陣列容量、陣列中的資料個數、陣列容量所需要的記憶體空間(指標)

類的建構函式:實現傳入陣列的容量,初始化陣列個數、根據容量開閉陣列所需的記憶體空。

拷貝建構函式:傳入乙個陣列(const myarray &arr),實現陣列的拷貝。

拷貝內容包括陣列容量、陣列中的資料、陣列所佔記憶體空間。

陣列所占用的記憶體空間用指標表示,所以拷貝指標時要用深拷貝。

operator=函式:返回的是陣列類的引用(myarray&)。先把堆區中的資料是放乾淨,

再進行深拷貝(容量、陣列大小、內 存空間),然後,再把拷貝

的陣列的內容放到新拷貝的記憶體中,最後,return *this;

尾插法:判斷容量是否充足,不足則return; 足夠則在原本的資料後追加

陣列this->paddress[this->m_size]=val;然後更新資料個數(this->m_size++)

尾刪法:先判斷陣列中的資料個數是否為0,為0則return。反之,直接隱藏最後乙個資料即可,

資料的個數減去1,不讓使用者看到最後乙個資料(this->m_size--)。

獲取元素個數:return this->m_size;

獲取容量: return this->m_capacity;

C 泛型程式設計之函式模板案例

案例描述 利用函式模板封裝乙個排序函式,可以對不同資料型別的陣列進行排序。排序規則是從大到小,排序演算法為選擇排序 分別用char和int陣列進行測試 include iostream include using namespace std 實現通用 對陣列進行排序 規則 從大到小 演算法 選擇排序...

C 模板程式設計與泛型程式設計之類模板中的友元(二)

template void func u val1,v val2 func 2,3 func 4.6f,5 第乙個模板引數指定,第二個模板引數編譯器自己推斷 func 4,5.8f 完全手工指定模板引數val1 2 val2 3 val1 4.6 val2 5 val1 4 val2 5.8clas...

泛型程式設計 之 模板認知

說起來入行也兩年多了,今天對模板有了新的認知。本來我對模板的認知只是停留在stl的認知上面。對stl中容器,演算法,和智慧型指標的使用上。但最近乙個網路程式設計專案中在使用select做阻塞程式設計時用到了乙個設計模式。但是要生成的控制類太多也太繁瑣。就在此時我才想到用模板才是最好的解決辦法。inc...