最近學資料結構,於是嘗試著去實現了乙個 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...