相信很多開發(fā)者在游戲開發(fā)中都會用到List表,用于存儲數(shù)據(jù)或者對象。估計也有很多人對它的實現(xiàn)并不清楚,只是會用而已。學(xué)習(xí)知識不能僅限于表面,如果抱著只是會用,時間長了對自己的技能提升沒有任何幫助不進則退,相信大家都學(xué)過侯捷先生的書,它編寫的C++都是底層的實現(xiàn)。作為開發(fā)者來說,如果對知識的掌握只限于表面,長久下去把自己就廢了。因為現(xiàn)在引擎都封裝的非常完善,其實這樣做的后果就是引擎的關(guān)鍵技術(shù)只是掌握在少數(shù)人手中,大部分開發(fā)者都是邏輯程序員,一直要依附于人家才能生活,這樣很可悲的,作為開發(fā)者的我們更應(yīng)該自己主動的去學(xué)習(xí)。這樣即使引擎有問題,自己也可以輕松解決。本章主要是給讀者介紹關(guān)于List的封裝,List是鏈表,表是有結(jié)點組成的,鏈表的遍歷可以使用迭代器實現(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;
};