list 模板類的簡單實現

2021-08-31 23:20:21 字數 2962 閱讀 7637

最近學資料結構,於是嘗試著去實現了乙個 list 類,發現確實有很多問題,特別是類的繼承這一塊,有些問題搞不懂……

這個 list  類只是乙個簡單的實現,只提供了基本的功能,也沒有邊界檢測什麼的,越界訪問的問題由使用者自己把握……

很多功能都是沒有實現的,總得來說這是乙個比較裸的 list 模板類,沒有什麼實用價值……

/* the program is made by pyy */

//#include //#include "class.h"

//using namespace std ;

////

// decleration

//template class node ;

template class list ;

template class const_iterator ;

template class iterator ;

////

// node

//template class node

} ;//

//// const_iterator

//template class const_iterator

const_iterator (const ci_t &ci)

: pnode(ci.pnode) {}

const t & operator* () const

const t * operator->() const

ci_t operator= (const ci_t &ci)

// ++

ci_t & operator++()

ci_t operator++ (int)

// --

ci_t & operator--()

ci_t operator--(int)

// ==

bool operator== (const ci_t &ci) const

bool operator!= (const ci_t &ci) const

protected:

node*pnode ;

} ;//

//// iterator

//template class iterator: public const_iterator

iterator (const iterator &ci): const_iterator(ci) {}

iterator operator= (const iterator &ci)

t & operator* ()

t * operator->()

// 不重定義這些操作符,所有對 iterator 的操作(++,--)的結果都會返回 基類,

// 導致無法實現這些 修改內容 的語句:erase (--end()) ;

// 編譯器會提示,const_iterator類無法轉換為 iterator類

iterator & operator-- ()

iterator operator-- (int)

iterator & operator++ ()

iterator operator++ (int)

} ;//

//// list, 簡單實現,無錯誤檢測,無邊界檢測

//template class list

~list ()

const list& operator= (const list&rhs)

// iterators

iterator begin ()

const_iterator begin () const

iterator end ()

const_iterator end () const

// rbegin () ;

// rend () ;

// capacity

bool empty () const

int size () const

// max_size () ;

// resize () ;

// element access

t front ()

const t front () const

t back ()

const t back () const

// modifiers

// assign () ;

void push_front (const t &t)

void pop_front ()

void push_back (const t &t)

void pop_back ()

// 只能修改 iterator 類指定的內容,如果 const_iterator 類傳進來,就會提示

// 基類 無法轉換為 繼承類。從而導致編譯不通過

iterator insert (iterator itr, const t &t)

iterator erase (iterator itr)

iterator erase (iterator start, iterator end)

// swap

void clear () /*

// operations

splice

remove

remove_if

unique

merge

sort

reverse

// allocator

get_allocator

*/private:

node*head ;

node*tail ;

int thesize ;

void init ()

} ;

list類模板的排序函式sort 實現自定義排序

雙向鍊錶list類模板有成員函式sort 效果是從小到大排序。但事實上,sort 可以接受乙個函式指標或函式物件的引數,實現個性化的排序需求。描述 程式填空,產生指定輸出 include include include include using namespace std intmain list...

簡單類模板

include include struct student 結構體student template 類模板 實現對任意型別資料進行訪問 class store template store store template t store getelem int main stores1,s2 sto...

list實現類的區別

1 arraylist 非執行緒安全 基於物件陣列 get int index 不需要遍歷陣列,速度快 iterator 方法中呼叫了get int index 所以速度也快 set int index,e e 不需要遍歷陣列,速度快 add方法需要考慮擴容與陣列複製問題,速度慢 remove ob...