明天面试,半夜睡不着复习下STL底层实现

本文详细介绍了C++中四种基础数据结构的实现:字符串类,使用动态内存管理;向量类,具备动态大小调整功能;双向链表结构的节点类;以及栈和队列的简单实现,分别基于向量和列表。这些数据结构是编程中常用的基础工具,理解其内部工作原理有助于提升编程能力。

序列容器

1.string

class string{
  string(const char* str = ""){
    if(str == nulptr){
      assert(false);
      return;
    }
    _str = new char[strlen(str) + 1];
    strcpy(_str,str);
    }

    string(const string& s)
      :_str(new char[strlen(s._str)+1])
    {
      strcpy(_str,s._str);
    }

    string& operator=(const string& s)
    {
      if(this != &s)
      {
        char* pstr = new char[strlen(s._str)+1];
        strcpy(pstr,s._str);
        delete[] _str;
        _str = pstr;
      }
      return *this;
    }

    ~string()
    {
      if(_str)
      {
        delete[] _str;
        _str = nullptr;
      }
    }

private:
  char* _str;
}

2.vector

是可变大小的数组

template<class T>
class vector
{
private:
iterator _start;
iterator _finish;
iterator _endofstorage;
public:
typedef T* iterator;
typedef const T* const_iterator;

iterator begin(){return 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学c的长弓狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值