![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++ STL
文章平均质量分 78
lloil
这个作者很懒,什么都没留下…
展开
-
一步一步写STL:定制boost::shared_ptr
某知名大师说过:自从有了智能指针,上一次发生内存泄露还是在2004年当实习生的时候! 由此可见智能指针威力无穷,竟让他8年没发生过内存泄露,我们上一篇给出了auto_ptr的实现方案,今天给出shared_ptr和实现版本,在新标准中auto_ptr已经不复存在了(其实存在不存在也没什么关系,你想用的话随时可以自己写一个啊)取而代之的是引入了boost的shared_ptr智能原创 2013-06-04 18:12:52 · 2388 阅读 · 1 评论 -
一步一步写STL:定制stl::auto_ptr
原创文章 转载请注明出处http://blog.csdn.net/effective_coder 欢迎来到内存这块雷区,在对内存分配器进一步讨论之前我觉得有必要先讨论一下STL中的auto_ptr,我也加了很多STL的讨论社区以及很多群,长久以来发现了一个很大的问题,太多的人反映出不敢用auto_ptr,原因是好多好多未定义行为,用到最后自己都原创 2013-06-01 11:00:12 · 2064 阅读 · 0 评论 -
一步一步写STL:空间配置器 (1)
侯捷说:追踪一流程序,并从中吸取养分,模仿着他写的程序,比那些自以为靠自己努力写出来的下三流程序价值高得多,至少我这么认为——世界上99.999%的程序,在STL面前都是下三流水平! 侯捷老师这句话对STL的评价太高了,以前只是熟练使用STL,知道一点原理,受他的影响,最终还是决定研究STL的源码,才刚开始收获就不小,还是把这个过程记录下来,并想着借助标准库的原理,自己写一个完整的仿STL原创 2013-05-30 02:01:59 · 6851 阅读 · 7 评论 -
STL中的内存分配器原理
题记:内存管理一直是C/C++程序的红灯区。关于内存管理的话题,大致有两类侧重点,一类是内存的正确使用,例如C++中new和delete应该成对出现,用RAII技巧管理内存资源,auto_ptr等方面,很多C/C++书籍中都使用技巧的介绍。另一类是内存管理的实现,如linux内核的slab分配器,STL中的allocator实现,以及一些特定于某种对象的内存管理等。最近阅读了一些内存管理实现方面的翻译 2013-05-02 00:37:14 · 7599 阅读 · 3 评论 -
迭代器适配器(iterator adapters)
前一节中我们讨论了主要的几个迭代器,但是那几个迭代器都是定义于STL中的标准容器,用法也只能针对标准容器,比较局限。在不断的演变中,STL的爱好者扩充了迭代器的内容,他们在迭代器的基础上发展而来,叫迭代器适配器,他提供了更多的操作功能,也不仅仅局限于容器,还可以应用于更多方面。首先看看迭代器适配器的分支图: 以上的迭代器都叫做迭代器适配器,正如容器有标准容器和容器适配器,仿函数原创 2013-03-28 21:58:32 · 3598 阅读 · 0 评论 -
STL容器之vector
Vector总览vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。缺点就是她的异常处理机制不完善,这点你在接下来的内容将会看见很多。为了可以使用vector,必须在你的头文件中包含下原创 2013-03-28 21:11:04 · 1369 阅读 · 0 评论 -
STL容器之deque
deque 和vector一样都是标准模板库中的内容,deque 是双端队列,在接口上和vector 非常相似,在许多操作的地方可以直接替换。假如读者已经能够有效地使用vector容器,下面提供deque的成员函数和操作,进行对比参考。函数描述c.assign(beg,end)c.assign(n,elem) 将[beg; end原创 2013-03-28 21:16:21 · 946 阅读 · 0 评论 -
STL总体说明
初探C++ STL学习笔记1:总体说明 本学习笔记主要讲解C++ STL的基本知识与体系框架,主要适合初学者,对于理解STL的相信也有一定的参考借鉴价值,笔记中采用图文并茂的方式,希望对大家有所帮助,更好的理解STL。讲解主线:1:讲解STL中的通用工具,比如pair对组,auto_ptr智能指针。2:讲解STL中的标准容器,vector list duque set map 等原创 2013-03-28 20:55:15 · 1059 阅读 · 0 评论 -
C++ stl之迭代器(iterator)
经过前面对各容器的讲解,相信大家已经对迭代器有一定的了解了,迭代器作为STL中的几大模块之一(系统工具,容器,迭代器,算法,仿函数,string以及iostream),重要性毋庸置疑,现在我们来详细的讨论分析STL中迭代器的用法。迭代器产生动机:在早期STL 的实现中,容器和算法是合并在一起的,即每个容器都有他的专属算法,但是后来发现这样效率不高,而且每个容器的很多算法都是大致相同的,原创 2013-03-28 21:31:24 · 4842 阅读 · 0 评论 -
auto_ptr智能指针
auto_ptr的设计动机:对于一般的常规指针,在动态分配内存时需要手动的delete掉所占内存,但是难免有疏忽的时候,那么将会对程序造成致命的危险,所以auto_ptr智能指针便应运而生,他本身是一个对象,因为具有常规指针的特点,所以叫做“智能指针”。他在构造函数中new出来内存,在析构函数中delete掉内存,所以不用我们手动的释放内存,带来了一定的安全性。auto_ptr按照以下原创 2013-03-28 20:59:09 · 1577 阅读 · 0 评论 -
STL之pair对组
Pair模版是C++ STL中短小精干的结构体,被定义在头文件中,把两个值视为一个结构单元,如map和multimap都利用了很多pair对组模版,即键/值>为成对元素,另外函数需要返回两个值的时候,也常用pair模版(当然,结构体也一样方便)。注意:pair被定义为结构体而不是类,这样一来他的成员都是公有属性,可以直接访问和赋值。Pair的定义:std::pair p(3,“原创 2013-03-28 20:56:29 · 1618 阅读 · 0 评论 -
一步一步写STL:多级空间配置器(上)
在前一篇空间配置器里我给出了一个标准STL空间配置器的接口,说明了4个函数的工作原理,具体在标准空间配置器,注意那只是一个标准接口,无论是HP版本还是微软的STL版本都支持那些接口,所以我们测试的时候没出任何问题!他实际上就是对全局的operator new 和 operator delete做了一个浅浅的包装,并没有什么效率和技巧上的优化,但是在SGI版本的STL里面,并没有采用那种分配方式,而原创 2013-06-29 19:38:21 · 1795 阅读 · 2 评论