按标签归档: 实现

C++ 智能指针 shared_ptr的实现

dream/ 十月 29, 2018/ C/C++, 数据结构实现/ 0评论

一.实现思路

记录指针的引用计数。每次被复制时,增加计数。每次被赋值时,左侧计数减少,右侧计数增加,同时检查左侧计数是否为0。

从值构造时,new一块空间,并将计数值设置为1。

每次析构时,检查引用计数是否为0,为0则delete构造时new的空间。

默认构造函数可以构造空共享指[……]

阅读全文

自己动手实现数据结构模板(5):字符串

dream/ 十月 8, 2018/ C/C++, 数据结构实现/ 0评论

字符串的实现借助于动态数组。到动态数组实现的链接。

字符串在动态数组的基础上,增加了从C风格的字符串(即以’\0’结尾的字符数组)构造和追加的相关函数,隐藏并重新实现了print函数,重载了<<运算符以使字符串能够直接输出到标准输出流。

具体实现:

#ifndef DTS_ST[......]

阅读全文

自己动手实现数据结构模板(4):动态数组

dream/ 十月 8, 2018/ C/C++, 数据结构实现/ 0评论

实现了动态增长空间的数组。当数组原空间不足以存储增加的内容时,会重新开辟数组空间并将数据移动到新空间。默认的增长速度为 原空间*2+1 ,再额外+1是为了防止空数组增长出现一直为空的情况(0*2=0)。

该动态数组实现了常用的接口函数(如size,at,append等),重载了可能常用的运算符[……]

阅读全文