案例描述:實現乙個通用的陣列類。
要求如下:
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...