相信很多開(kāi)發(fā)者在游戲開(kāi)發(fā)中都會(huì)用到List表笼痹,用于存儲(chǔ)數(shù)據(jù)或者對(duì)象坞靶。估計(jì)也有很多人對(duì)它的實(shí)現(xiàn)并不清楚,只是會(huì)用而已琅催。學(xué)習(xí)知識(shí)不能僅限于表面居凶,如果抱著只是會(huì)用,時(shí)間長(zhǎng)了對(duì)自己的技能提升沒(méi)有任何幫助不進(jìn)則退藤抡,相信大家都學(xué)過(guò)侯捷先生的書侠碧,它編寫的C++都是底層的實(shí)現(xiàn)。作為開(kāi)發(fā)者來(lái)說(shuō)缠黍,如果對(duì)知識(shí)的掌握只限于表面弄兜,長(zhǎng)久下去把自己就廢了。因?yàn)楝F(xiàn)在引擎都封裝的非常完善,其實(shí)這樣做的后果就是引擎的關(guān)鍵技術(shù)只是掌握在少數(shù)人手中替饿,大部分開(kāi)發(fā)者都是邏輯程序員语泽,一直要依附于人家才能生活,這樣很可悲的视卢,作為開(kāi)發(fā)者的我們更應(yīng)該自己主動(dòng)的去學(xué)習(xí)踱卵。這樣即使引擎有問(wèn)題,自己也可以輕松解決据过。本章主要是給讀者介紹關(guān)于List的封裝惋砂,List是鏈表,表是有結(jié)點(diǎn)組成的绳锅,鏈表的遍歷可以使用迭代器實(shí)現(xiàn)西饵,這些就組成了鏈表的封裝。
首先看看迭代器的定義:
[cpp]
/// the list iterator
class Iterator
{
public:
/// default constructor
Iterator();
/// constructor
Iterator(Node* node);
/// copy constructor
Iterator(const Iterator& rhs);
/// assignment operator
const Iterator& operator=(const Iterator& rhs);
/// equality operator
bool operator==(const Iterator& rhs) const;
/// inequality operator
bool operator!=(const Iterator& rhs) const;
/// pre-increment operator
const Iterator& operator++();
/// post-increment operator
Iterator operator++(int);
/// pre-decrement operator
const Iterator& operator--();
/// post-increment operator
Iterator operator--(int);
/// bool operator
operator bool() const;
/// safe -> operator
TYPE* operator->() const;
/// safe dereference operator
TYPE& operator*() const;
private:
friend class List<TYPE>;
/// access to node
Node* GetNode() const;
Node* node;
};