CONTAINER類之心得體會

2021-07-11 06:14:34 字數 2824 閱讀 9414

其實容器類就是乙個有各種容器的介面,通過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.調查問卷的製作 由於之前所做的社會實踐活動中經常接觸到調查問卷,所以我對它的基本格式...