内存链表union类型节省内存

我在阅读《STL源码剖析》中看到关于内存组织成空闲链表的结构: union obj{ union obj* next; char client_data[1]; }; 使用union主要是为了节省空间,当我们以一个指针得到该块内存时,可以完全使用该块内存。假如我们用resu...

2018-07-18 21:38:20

阅读数:17

评论数:0

【STL】标准库中count与count_if函数说明与例子

count_if函数原型如下:template<class _InIt, class _Pr> inline typename iterator_traits<_InIt>::difference_ty...

2018-05-17 11:00:27

阅读数:40

评论数:0

stl.find_if用法总结

有时我们要在map、vector容器中查找符合条件的记录,map提供一个find的成员函数,但也仅限于查找关键字满足条件的记录,不支持值域的比较。如果我们要在值域中查找记录,该函数就无能无力了。而vector甚至连这样的成员函数都没有提供。所以一般情况下进行值域的查找,要么自己遍历数据,要么求助于...

2018-05-17 10:43:59

阅读数:90

评论数:0

C++ traits编程技法之__type_traits

//以下是铺垫,__type_trivial的作用在后面,下面是一些概念性介绍。 __type_trivial  双底线前缀,表示是SGI STL以外的东西,不在STL标准范围之内。__type_trivial负责萃取型别(Type)的特性,究竟是什么特性呢?         注:trivial是...

2018-03-02 20:27:32

阅读数:59

评论数:0

STL中的Traits编程技法

最近在看读《STL源码剖析》,看到Traits编程技法这节时,不禁感慨STL源码作者的创新能力。那么什么是Traits编程技法呢?且听我娓娓道来:   我们知道容器的许多操作都是通过迭代器展开的。其中容器类似于数组,迭代器类似于指针。我们用数组来写个例子: 1 int arr[5] =...

2018-01-29 17:04:51

阅读数:58

评论数:0

《STL源码剖析》学习之traits编程

侯捷老师在《STL源码剖析》中说到:了解traits编程技术,就像获得“芝麻开门”的口诀一样,从此得以一窥STL源码的奥秘。如此一说,其重要性就不言而喻了。        之前已经介绍过迭代器,知道了不同的数据结构都有自己专属的迭代器,不同的迭代器也有不同的特性,由于算法的接口是统一的,通过迭代...

2018-01-29 17:02:56

阅读数:49

评论数:0

SGI STL中内存池的实现

最近这两天研究了一下SGI STL中的内存池, 网上对于这一块的讲解很多, 但是要么讲的不完整, 要么讲的不够简单(至少对于我这样的初学者来讲是这样的...), 所以接下来我将把我对于对于SGI STL的理解写下来, 方便以后查阅同时也希望能够对像我一样刚刚接触C++的初学者提供一些帮助吧. ...

2018-01-01 23:08:59

阅读数:141

评论数:0

STL学习——STL中的内存池管理技术

一、STL中的内存管理 当我们new一个对象时,实际做了两件事情:(1)使用malloc申请了一块内存。(2)执行构造函数。在SGI中,这两步独立出了两个函数:allocate申请内存,construct调用构造函数。这两个函数分别在和中。 二、第一级配置器 第一级配置器以mallo...

2018-01-01 22:19:12

阅读数:135

评论数:0

STL源码剖析——STL算法之find查找算法

前言     由于在前文的《STL算法剖析》中,源码剖析非常多,不方便学习,也不方便以后复习,这里把这些算法进行归类,对他们单独的源码剖析进行讲解。本文介绍的STL算法中的find、search查找算法。在STL源码中有关算法的函数大部分在本文介绍,包含findand find_if、a...

2017-11-21 10:19:36

阅读数:102

评论数:0

SGI STL空间配置器详解(一)-第一级空间配置器

一、SGI STL配置器简介 SGI STL的配置器与众不同,它与标准规范不同。如果要在程序中明确使用SGI配置器,那么应该这样写: [cpp] view plain copy vectorint,std::alloc> ...

2017-11-16 11:18:56

阅读数:105

评论数:0

C++ STL中Map的按Key排序和按Value排序

map是用来存放键值对的数据结构,可以很方便快速的根据key查到相应的value。假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择。 我们这样定义,map,其中学生姓名用string类型,作为Key;该学生的成绩用int类型,作为value...

2017-04-21 09:20:54

阅读数:265

评论数:0

C++三种容器:list、vector和deque的区别

在写C++程序的时候会发现STL是一个不错的东西,减少了代码量,使代码的复用率大大提高,减轻了程序猿的负担。还有一个就是容器,你会发现要是自己写一个链表、队列,或者是数组的时候,既要花时间还要操心怎么去维护,里面的指针啊,内存够不够用啊,长度问题,有没有可能溢出啊等等一系列的问题等着我们去解决,还...

2016-12-27 14:41:12

阅读数:168

评论数:0

实战c++中的vector系列--正确释放vector的内存(clear(), swap(), shrink_to_fit())

关于vector已经写的差不多了,似乎要接近尾声了,从初始化到如何添加元素再到copy元素都有所涉及,是时候谈一谈内存的释放了。 是的,对于数据量很小的vector,完全没必要自己进行主动的释放,因为那样对程序的效率几乎没有影响。但是当vector中存入大量的数据后,并且都数据进行了一些操作,比...

2016-08-18 11:43:23

阅读数:263

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭