随笔分类 -  【MySTL实现】

摘要:1、相关 在STL中,list是一个双向带环链表。list不能像vector那样使用普通指针作为迭代器,因为其节点在存储空间中不一定连续存在,list的迭代器必须有能力指向list的节点,这样才能正确的递增(指向下一个节点)、递减(指向上一个节点)、取值成员(取节点的数据值)存取等操作,由于STL 阅读全文
posted @ 2019-06-11 21:00 吾之求索 阅读(317) 评论(0) 推荐(0)
摘要:1、相关 前面五个章节都是容器实现的一些基础工作,尤其是迭代器和空间配置器。这两个是实现容器最基础的,一个用来给容器分配空间,一个提供接口以便算法访问容器中的元素。 vector是动态数组,随着元素的加入内部会自动扩充空间容纳新元素,这也是vector实现的难点。vector是一个连续的线性空间,不 阅读全文
posted @ 2019-06-04 22:03 吾之求索 阅读(333) 评论(0) 推荐(0)
摘要:1、相关 前面实现的四部分其实都是为这一章做准备。首先我们来看,STL一共有六大组件:容器、算法、迭代器、仿函数、配接器、配置器。前面迭代器的实现其实只是定义了一些标准,不是真正的迭代器实现,真正的迭代器实现会放在每一个容器里,而容器的实现需要一个基本的功能就是内存分配。这一部分就来实现空间配置器a 阅读全文
posted @ 2019-05-29 21:42 吾之求索 阅读(340) 评论(0) 推荐(0)
摘要:1、相关 iterator.h文件其实并不涉及具体的哪一个容器的迭代器,只是定义了一些统一的标准,比如迭代器相应的型别,比如一个算法需要用到迭代器所指对象的型别,而怎么获得型别在前面traits编程已经说过。根据经验,最常用到的迭代器的型别有五种,value type,difference type 阅读全文
posted @ 2019-05-22 21:38 吾之求索 阅读(249) 评论(0) 推荐(0)
摘要:1、相关 copy函数在前面内存基本处理工具中使用过,STL中的copy函数是十分复杂的,复制操作不外乎是运用赋值操作或者拷贝构造函数,copy所用的是前面的,有时候传入copy函数的元素型别是trivial assignemnt operator,因此如果能够直接使用内存直接复制行为(memove 阅读全文
posted @ 2019-05-20 21:36 吾之求索 阅读(256) 评论(0) 推荐(0)
摘要:1、相关 很多时候我们需要根据类型的不同来调用不同的函数,在析构和构造工具的实现中,destroy函数有两个版本,第二个版本的实现用到了value_type(first)来获取迭代器的类型,在内存处理工具中,也有很多地方用到这种方式来获得一些模板的类型。其实找到相对应的源码,会发现其实他们是通过模板 阅读全文
posted @ 2019-05-16 20:49 吾之求索 阅读(226) 评论(0) 推荐(0)
摘要:1、相关 STL定义了五个全局函数,作用域为初始化空间上,这样的功能对于容器的实现很有帮助,在后面的容器实现代码中会看到他们的作用,前两个函数是在上一篇实现的用于构造的construct()和用于析构的destroy()。另外三个在本节实现。其中用到几个算法比如copy()和fill()等,将在后面 阅读全文
posted @ 2019-05-15 10:34 吾之求索 阅读(207) 评论(0) 推荐(0)
摘要:1、相关 根据侯捷老师的STL源码解析以及SGI-STL-2.9版本实现。本文是第一篇,实现基本的构造和析构函数。所有相关的注释均在代码中注明,其中所需要的迭代器操作和萃取操作在之后实现,这里需要知道它们的用途。 2、代码 阅读全文
posted @ 2019-05-15 10:29 吾之求索 阅读(246) 评论(0) 推荐(0)