博客专栏  >  编程语言   >  STL源码探究

STL源码探究

STL(Standard Template Library),C++模板库。通过阅读它的源码,能够让我们更加熟练的使用STL,并且学到到各种容器,迭代器,算法的实现以及泛型思维。

关注
4 已关注
39篇博文
  • SGISTL源码探究-配接器

    前言关于配接器,之前在分析序列式容器时就已经分析过queue和stack,它们也是配接器的一种,通过使用其他容器的接口然后自己加以修饰,形成另外一种容器。除了应用在容器上之外,还有关于应用在仿函数上的...

    2017-09-26 19:18
    84
  • SGISTL源码探究-仿函数

    前言本小节将介绍STL六大组件之一的仿函数(又称函数对象),在前面分析算法部分时,我们其实已经见识到了仿函数的大量使用(各算法的另一个版本,传入comp仿函数)。关于仿函数的实现,其实就是重载了()运...

    2017-09-26 13:14
    312
  • SGISTL源码探究-stl_algo.h中的排序算法

    前言在本小节中,我们将分析STL中算法组件的最后一部分:排序算法。排序算法分为内部排序和外部排序。而内部排序中常见的有八种排序算法:直接插入排序、希尔排序、简单选择排序、堆排序、冒泡排序、快速排序、归...

    2017-09-25 20:21
    267
  • SGISTL源码探究-stl_algo.h中的排列算法

    前言在本小节中,我们将分析stl_algo.h中的排列算法。可能你使用过STL中的next_permutation求过全排列。比如这样:#include #include #include us...

    2017-09-24 16:31
    272
  • SGISTL源码探究-stl_alog.h中的二分查找算法

    前言在上一小节中我们分析了stl_algo.h中的部分算法。本小节中我们将继续分析其中关于二分查找类的算法,即lower_bound、upper_bound、binary_search、equal_r...

    2017-09-24 16:26
    221
  • SGISTL源码探究-stl_algo.h中的基础算法

    前言在上一小节中我们分析了stl_algobase.h中的算法,虽然都是一些比较基础的算法,但是了解其中的泛化以及特化的思想是很重要的。在本小节中我们将分析stl_algo.h中的算法,里面的大部分算...

    2017-09-23 17:59
    282
  • SGISTL源码探究-stl_algobase.h中的算法

    前言在上一小节中,我们分析了stl_numeric.h中的算法部分。在本小节中,我们将分析stl_algobase.h文件中的算法,里面实现的都是一些比较基本的算法,比如equal、fill、max、...

    2017-09-22 21:23
    504
  • SGISTL源码探究-stl_numeric.h中的数值算法

    前言上一小节中,我们对stl中的算法部分做了一个大致的说明。本小节我们将进入到其中关于数值算法的部分,都在stl_numeric.h文件中。废话不多说,直接看源码吧。stl_numericaccumu...

    2017-09-20 16:03
    151
  • SGISTL源码探究-STL中的算法(前言)

    前言我们目前已经分析了STL中的六大组件的一半。剩下的还有算法、仿函数、配接器,已经分析了配置器、迭代器、容器部分。接下来进入到剩下的三大组件中最复杂的算法部分,关于STL中的算法,它实现了很多功能,...

    2017-09-20 13:58
    95
  • SGISTL源码探究-关联式容器:hash_multimap

    前言本小节将介绍hash_multimap的源码实现,它与hash_map的不同与map和multimap的不同类似,所以我们可以一边分析它们的不同之处,一边顺便复习hash_map。hash_mul...

    2017-09-19 11:06
    410
  • SGISTL源码探究-关联式容器:hash_multiset

    前言在上几节中我们分析了hashtable以及hash_set还有hash_map的实现,hash_set以及hash_map都不允许有重复的key存在,而hashtable提供了允许插入重复元素的操...

    2017-09-19 10:50
    442
  • SGISTL源码探究-关联式容器:hash_map

    前言在上一小节,我们分析了hash_set的实现,本小节我们将针对hash_map进行分析。它大部分也是调用的hashtable,不过它与map的区别也是因为底层的实现不同,所以map具有自动排序功能...

    2017-09-19 09:35
    231
  • SGISTL源码探究-关联式容器:hash_set

    前言在上小节中,我们已经分析了hashtable的实现,它只是hash_set和hash_map的预备知识。在本小节中,我们将进入到关联式容器hash_set的源码中,一窥究竟。hash_set的实现...

    2017-09-19 08:58
    262
  • SGISTL源码探究-STL中的hashtable(下)

    前言在上一小节中,我们介绍了hashtable的基本概念,以及分析了在STL中,hashtable的迭代器、采用的数据结构及它的构造/析构函数,还有部分成员函数。 在本小节中,我们讲继续分析剩下的一...

    2017-09-18 21:07
    346
  • SGISTL源码探究-STL中的hashtable(上)

    前言关于哈希表部分,哈希函数以及解决哈希冲突的方法都有很多种,在本文中不会详细去讨论哈希表的大量知识,而是以SGISTL实现的hashtable为主,所以如果对hashtable不太了解,建议先去网上...

    2017-09-18 19:49
    391
  • SGISTL源码探究-关联式容器:multimap

    前言在本小节中我们将分析multimap的实现。它和map的最大的不同之处在于,map不允许重复的键值插入,而multimap允许重复的键值插入,对应到底层的实现,multimap调用的是insert...

    2017-09-17 16:11
    278
  • SGISTL源码探究-关联式容器:multiset

    前言multiset和set的实现十分相似,除了允许键值重复之外,几乎一样。而实现允许键值重复这一功能的是红黑树中提供的操作insert_equal,接下来我们就进入到它的源码,顺便也复习一下set,...

    2017-09-17 15:39
    343
  • SGISTL源码探究-关联式容器:map

    前言在本小节中,我们将分析map容器,它与set最大的不同就是,它是key-value型的,而set的key和value是同一个。map和set底层都由红黑树实现,map上存储的都是pair,即键值对...

    2017-09-17 10:46
    324
  • SGISTL源码探究-pair的实现

    前言本小节将对pair进行源码分析,它经常用于map的实现中,而我们下一节就会分析map的源码,所以有必要在这一小节中,先把pair分析了。 pair的作用就是将两个数据合成一个,而这两个数据可以是...

    2017-09-17 10:44
    259
  • SGISTL源码探究-关联式容器:set

    前言在本小节中,我们将分析set容器,它的特性是,所有的元素会根据键值自动在set内部排序,set的键值就是实值,并且不允许两个相同值的元素在set中存在。并且set的元素值不能通过迭代器进行改变,因...

    2017-09-16 19:32
    200

img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部