1,staticarray 確實可以代替原生陣列使用,但是在建立 staticarray 物件時,陣列大小必須明確指定,能不能建立乙個物件在使用過程中,物件的大小可以動態指定,且功能超越 staticarray;
2,課程目標:
1,本節課完成 dynamicarray 類的建立,;
2,dynamic 指的是陣列的大小可以動態指定;
3,dynamicarray 設計要點:
1,類模板:
1,動態確定內部陣列空間的大小;
2,實現函式返回陣列長度;
3,拷貝構造和賦值操作;
4,動態重置陣列大小;
4,dynamicarray 類的宣告:
5,dynamicarray 動態陣列的實現:
16,dynamicarray 類中的函式實現存在重複的邏輯,如何進行**優化(優化見本文 5 中的實現)?#ifndef dynamicarray_h
2#define dynamicarray_h
34 #include "
array.h
"5 #include "
exception.h"6
7namespace
dtlib826
}27return
ret;28}
2930
void update(t* array, int length) //
o(1)
3139
else
4043}44
45void init(t* array, int length) //
o(1)
4652
else
5356}57
58public
:59 dynamicarray(int length = 0) //
o(1) 動態陣列如果不指定大小,則預設的陣列大小為零;
6068
else
6972
*/73}74
75 dynamicarray(const dynamicarray& obj) //
o(n)
7687}88
else
8992
*/93}94
95 dynamicarray& operator= (const dynamicarray& obj) //
o(n)
96109
t* temp = this->m_array;
110this->m_array = array;
111this->m_length = obj.m_length;
112delete temp;
113}
114else
115118
*/119
}120
121return *this
;122
}123
124void resize( int length ) //
o(n)
125138
t* temp = this->m_array;
139this->m_array = array;
140this->m_length = length;
141delete temp;
142}
143else
144147
*/148
}149
}150
151int length() const
//o(1)
152155
156 ~dynamicarray() //
o(1)
157160
};161
162}
163164
#endif
//dynamicarray_h
1,init,物件構造時的初始化操作;
2,copy,在堆空間中申請新的記憶體,並執行拷貝操作;
3,update,將指定的堆空間作為內部儲存陣列使用;
7,實現**優化中:
1,重複**抽象為保護成員函式;
2,提供功能用於實現公有函式功能;
8,小結:
1,staticarray 通過封裝原生陣列的方式實現陣列類;
2,dynamicarray 動態申請堆空間,使得陣列長度動態可變;
3,陣列物件能夠代替原生陣列,並且使用上更安全;
4,**優化是專案開發過程中不可或缺的環節:
1,每乙個函式足夠小;
2,每乙個函式只做一件事;
資料結構中的陣列 靜態陣列類的建立
1,順序儲存線性表兩個問題 1,當做陣列誤用 2,效率有隱患 2,本文解決第乙個功能上的問題,建立乙個陣列類代替順序儲存結構中的陣列訪問操作符 1,完成 array 類的具體實現 2,完成 staticarray 類的具體實現,替代原生陣列 4,需求分析 1,建立陣列類代替原生陣列的使用 1,陣列類...
資料結構 動態陣列
int a newint 2 3 定義乙個兩行雜湊的陣列 靜態陣列 int b newint 2 定義行數,列數可變 陣列的儲存 int a newint 10 一維陣列 int a newint 2 3 二維陣列 int a newint 2 3,4 三維陣列 陣列儲存的特點靜態陣列 int a ...
搞懂資料結構 動態陣列
什麼是陣列 陣列是一種順序儲存的線性表,所有元素的儲存的記憶體位址都是連續的。動態陣列 在很多程式語言中,陣列建立後是容量是固定的,但是實際開發中,我們更希望能動態的改變陣列的容量 介面設計 int size 元素的數量 boolean isempty 是否為空 boolean contains i...