首页 > 其他分享 >stl之list

stl之list

时间:2023-02-24 10:24:23浏览次数:25  
标签:node iterator stl list ++ 操作符 重载

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++和++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

相关文章