STL(7) list

发布时间 2023-09-09 02:50:03作者: LiviaYu

源代码分析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来让其更智能

用法

源代码



有着大量的操作符重载来模拟指针的行为
需要记住,在代码中,有些操作符已经被重载了

不允许后++两次,所以这个类要向整数看齐,模仿

源代码分析GNU 4.9