list的数据结构
list的数据结构是一个双向环形链表。因此只需要一个指针就可以完成整个链表
template<class T, class Alloc=alloc>
class list {
protected:
typedef __list_node<T> list_node;
public:
typedef list_node* link_type;
protected:
link_type node; //只要一个指针就可以表示整个环状双向链表
};
//STL前闭后开原则
iterator begin() {return (link_type)((*node).next);}
iterator end() {return node;}
bool empty() const {return node->next == node;}
size_type size() const {
size_type result = 0;
distance(begin(), end(), result);
return result;
}
reference front() {return *being();}
reference back() {return *(--end());}