2303_78895743 2023-12-05 11:29 采纳率: 66.7%
浏览 4

关于stl迭代器的实现(《stl元码剖析》)

单独看list和list_iterator我都能看懂,但我不理解这两者是怎么联动的。比如,①list a;a.begin()返回的是首节点的迭代器(使用构造函数,把节点转换为迭代器)。可是迭代器的设计是模板,使用了三个参数,我不理解这其中的关系。②再比如list::literator ite这个又是怎么实现的,两者是什么关系?
表述的可能有问题,越想越乱了。

img

img

img

  • 写回答

3条回答 默认 最新

  • flower980323 2023-12-05 14:12
    关注

    ①迭代器的构造函数传递link_type类型就能构造,所有begin,end能正常工作。模板参数不懂什么意思就看模板的知识
    ②list::literator里面有一个指向list的节点node指针,通过迭代器访问list,它的++、--重载都是改变指向list里面元素的位置

    迭代器就是访问容器一种方式,没啥难理解的,就是数组(容器)和数组指针(迭代器)的关系一样
    C++的算法函数都是通过传递迭代器参数访问容器,不直接传递容器
    很久以前看的这本书了,实现啥的没啥印象了

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月5日

悬赏问题

  • ¥15 Opencv(C++)异常
  • ¥15 VScode上配置C语言环境
  • ¥15 汇编语言没有主程序吗?
  • ¥15 这个函数为什么会爆内存
  • ¥15 无法装系统,grub成了顽固拦路虎
  • ¥15 springboot aop 应用启动异常
  • ¥15 matlab有关债券凸性久期的代码
  • ¥15 lvgl v8.2定时器提前到来
  • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
  • ¥15 cam_lidar_calibration报错