其實容器類就是乙個有各種容器的介面,通過c++繼承與多型的特性,能夠自由的往容器類中新增各種資料結構。上圖就是這個容器類的基本結構。其中帶箭頭的線表示繼承關係、帶矩形的線表示組成關係、帶圓形的線表示這個類是乙個純虛類(可以理解成介面)
為了編碼的便捷,在下面的編碼中我並沒有自己寫排序的演算法,而是呼叫了algorithm 中的std::sort()函式.
collection.hpp
// created by bowenwu in 20160416
#ifndef collection_hpp
#define collection_hpp
class collection
// 並且加入空函式體, 因為對於析構函式來說
// 是不能定義為純虛函式的
virtual
void add(e e) = 0;
virtual
void clear(void) = 0;
virtual
bool contain(e e) = 0;
virtual
bool isempty(void) = 0;
virtual
void remove(e e) = 0;
virtual
void sort(void) = 0;
virtual
int size(void) = 0;
};#endif // !collection_hpp
在collection 的構造過程中,一定要注意析構函式不能省略,並且宣告為virtual,因為宣告成了virtual而不是pure virtual,所以必須要給他乙個函式的定義,這裡就把他宣告成空的就可以了。
如果不將析構函式寫成virtual,或者省略,最後析構函式就不會具有多型的特性,導致arraylist 或者其他的一些類的析構函式不會被呼叫,導致記憶體洩漏。(我就在這個地方卡了幾個小時,血的教訓:))
list.hpp
// created by bowenwu in 20160416
// list.hpp--abstract class
#ifndef list_hpp
#define list_hpp
#include "collection.hpp"
class list :public collection
// 與collection類似, 宣告為virtual
virtual
void add(e e) = 0;
virtual
void clear(void) = 0;
virtual
bool contain(e e) = 0;
virtual
bool isempty(void) = 0;
virtual
void remove(e e) = 0;
virtual e& operator(int index) = 0;
virtual e& get(int index) = 0;
virtual
int indexof(int element) = 0;
virtual
void sort(void) = 0;
virtual
int size(void) = 0;
};#endif // !list_hpp
兩個純虛類的構造就這樣,下面就是arraylist和linkedlist的具體實現,個人覺得這題最難的地方就是析構函式,因為自己因為這個卡了很久:)
arraylist.hpp
#ifndef arraylist_h_
#define arraylist_h_
#include "list.hpp"
class arraylist : public list ;
#endif
linkedlist.hpp
#ifndef linkedlist_h_
#define linkedlist_h_
#include "list.hpp"
#include
class linkedlist : virtual
public list
} node;
linkedlist();
~linkedlist();
virtual
void add(e e);
virtual
void clear(void);
virtual
bool contain(e e);
virtual
bool isempty(void);
virtual
void remove(e e);
virtual e& operator(int index);
virtual e& get(int index);
virtual
int indexof(e element);
virtual
void sort(void);
virtual
int size(void);
private:
node* head;
node* tail;
int _size;
};#endif
專案管理之心得體會
團隊管理 1,對下屬要承諾多兌現 承諾太多而兌現太少 則給員工欺騙的感覺,使失去信任。2,要責任明確,不要把自己的任務 下放給下屬去處理,如 工作量的評估確認 讓開發人員自己估計 肯定是不準確的。3,自己有較廣闊的知識,較豐富的人生體驗 不是指工作本身經驗 這樣可使下屬員工更信服於你。4,多激勵員工...
實訓之心得體會
我們的大二生活就這樣匆匆結束了,彷彿自己還是學生,還是個說話總帶孩子氣的小孩。但是當我們來到無錫市公共實訓基地時,任老師就給我們講 你們已不再是學生了,是一名員工,那麼就不應該總把自己當學生看待了,要以一名正式員工的身份看待自己。當時一聽,還沒有把老師的話理解透徹,後來想想老師的話,說的很有道理。為...
調查問卷之心得體會
以前在各種社會實踐活動中,我總是發調查問卷給別人填,而自己卻從未動手親自的製作乙份調查問卷,關於這一點,我感到異常慚愧。很感謝老師給了我這次自己動手的機會,讓我從中學到了很多。以下是關於這次調查問卷的過程與體會 1.調查問卷的製作 由於之前所做的社會實踐活動中經常接觸到調查問卷,所以我對它的基本格式...