
STL讲解
文章平均质量分 94
带你一步一步领悟STL的使用、性质和源码。
Tom王要coding
5月4日
展开
-
STL讲解——priority_queue的实现
优先级队列默认使用vector作为其底层存储数据的容器,在vector上又使用了堆算法将vector中元素构造成堆的结构,因此priority_queue就是堆,所有需要用到堆的位置,都可以考虑使用priority_queue。默认的堆是一个大堆,但是我今天设计的是一个默认小堆的函数,而且我的lesser是小堆比较,这是因为和单词进行对比更容易上手理解。并不想再写一个大堆出来,因为会有代码冗余,于是乎想到了构造一个仿函数,来帮我实现大于小于的函数判断。其他的细节基本没什么重点了。原创 2023-04-05 12:02:39 · 395 阅读 · 0 评论 -
STL讲解——模拟实现List
直接调用Ptr就可以了,这些东西都是打包好的。只需要改Ref和Ptr就可以实现调的是不是带const的变量。有了迭代器就可以实现find 、insert、erase。因为list是链表,所以先设计一个节点,双向节点。但是如果我需要const iterator怎么办?当然不是了,这就体现出stl大佬思维的灵活性了。只需要再最后\最前插入这也元素就可以了(普通迭代器很简单和之前链表(忘记了,请。这个简直神迹一般的代码,因为我不管需要。插入是在pos前的位置插入。就会调用Ref就可以了,使头结点自己连接自己。原创 2023-03-13 16:59:56 · 309 阅读 · 6 评论 -
STL讲解——模拟实现vector
在STL源码中,发现vector定义的并不是 start、size、capacity,而是start、finish、end_of_storage.这样就可以得到size()和capacity()。原创 2023-03-07 12:54:18 · 1013 阅读 · 7 评论 -
STL讲解——string
C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。原创 2023-02-27 09:45:09 · 259 阅读 · 4 评论 -
STL讲解——模拟实现string
大厂在面试中,面试官总喜欢让学生自己来模拟实现string类,最主要是实现string类的增、删、查、改、构造、拷贝构造、赋值运算符重载以及析构函数。大家看下自己可不可以写一个string类?大家肯定会想想我刚刚这样设计一个string类吧?可是你不觉得少了好多东西吗?1.缺少(虽然可以默认生成,但是都是这种开辟空间的类肯定是不行的,析构函数会多次析构同一片区域)。2.增删查改一个都没有。3.析构函数需要自己编写。原创 2023-02-17 15:37:40 · 427 阅读 · 0 评论