list结构
内存大小
list里存放的数据就一个node,为link_node类型,最终是个指针,为4字节,所以list的sizeof为4
我们可以看到__list_node结构体,它是双向链表,里面存放数据data,但是可以看到它前后指针类型是void*,这个其实是不太理想的,后续需要进行转型操作,后在G4.9版改进了
list iterator设计
iterator必然是个class,是智能指针,里面有大量的操作符重载,指针需要*、->、++、--、+=等操作
注意:iterator都需要有5个typedef,分别为iterator_category、value_type、pointer、reference、link_type、different_type
还有一些操作符function:++、--等
操作符++
![](/i/l/?n=23&i=blog/1634852/202302/1634852-20230224092427247-710542747.png)
++有i++和++i这两种方式,为了区分,规定++i没有参数,i变成调用++函数的对象了;i++有参数但是没有实际意义
在list中,++i就取node的next就行,记得转型,--类似
i++,需要注意它在进行操作的时候,有些操作符是已经被重载了的,例如tmp = this,是被重载了的,但是编译器先遇到=,=也被重载了,所以*this就变成了重载的=的参数,后面2的也类似
标签:node,iterator,stl,list,++,操作符,重载 From: https://www.cnblogs.com/acwarming/p/17150359.html