list的数据结构

list的数据结构是一个双向环形链表。因此只需要一个指针就可以完成整个链表

  1. template<class T, class Alloc=alloc>
  2. class list {
  3. protected:
  4. typedef __list_node<T> list_node;
  5. public:
  6. typedef list_node* link_type;
  7. protected:
  8. link_type node; //只要一个指针就可以表示整个环状双向链表
  9. };
  10. //STL前闭后开原则
  11. iterator begin() {return (link_type)((*node).next);}
  12. iterator end() {return node;}
  13. bool empty() const {return node->next == node;}
  14. size_type size() const {
  15. size_type result = 0;
  16. distance(begin(), end(), result);
  17. return result;
  18. }
  19. reference front() {return *being();}
  20. reference back() {return *(--end());}