源代码分析GNU 2.9
存储对象
list中唯一存储的东西就是一个node 这个node是link_type类型,而link_type被定义为是list_node*
也就是说,node存的是一个指向list_node的指针,4个字节(32位下)
所以,如果sizeof(list())=4
list_node的设计
100w元素,分配时同时分配指针
两个指针指向void* 需要正确的类型转换
iterator
要求
由于链表在内存中不连续
所以需要将iterator的++改写为iterator当前指向的下一个
iterator必须是一个class来让其更智能
用法
源代码
有着大量的操作符重载来模拟指针的行为
需要记住,在代码中,有些操作符已经被重载了
不允许后++两次,所以这个类要向整数看齐,模仿