STL
JXH_123
这个作者很懒,什么都没留下…
展开
-
STL之deque容器的实现框架
vector底层采用的是一个数组来实现,list底层采用的是一个环形的双向链表实现,而deque则采用的是两者相结合,所谓结合,并不是两种数据结构的结合,而是某些性能上的结合。我们知道,vector支持随机访问,而list支持常量时间的删除,deque支持的是随机访问以及首尾元素的删除。原创 2014-06-24 20:28:20 · 2975 阅读 · 1 评论 -
STL之sort函数的使用方法
STL封装了一个排序算法,该算法对应的头文件为#include<algorithm>,我们可以根据需要对一个数组进行排序或者降序。原创 2014-06-19 13:47:57 · 1954 阅读 · 0 评论 -
STL之vector容器的实现框架
实现vector容器的思路等同于实现一个动态数组,下面我们参照源码的相关资料,给出一个vector容器的大致框架,只有声明,没给出具体的实现。原创 2014-06-19 10:13:23 · 1039 阅读 · 0 评论 -
STL之内存处理
说明:本文仅供学习交流,转载请标明出处,欢迎转载! STL中与内存配置相关的类是allocator类,这是一个模板类,用于内存的分配、对象的构造、对象的析构和空间的删除,本文主要介绍下相关的函数。 内存空间的分配:allocate函数 allocate函数原型为:iter allocate(n,T*),分配足以容纳n个T对象的空间,返回指向所原创 2014-06-18 19:29:09 · 861 阅读 · 0 评论 -
copy、copy_backward和copy_if的区别
copy,copy_backward和copy_if是几种常用的泛型算法,这三个函数包含在头文件#include<algorithm>中,下面县给出三种函数的原型,再说明三者的区别。原创 2014-06-17 15:32:56 · 1059 阅读 · 0 评论 -
谈谈vector容器的三种遍历方法
vector容器是最简单的顺序容器,其使用方法类似于数组,实际上vector的底层实现就是采用动态数组。在编写程序的过程中,常常会变量容器中的元素,那么如何遍历这些元素呢?本文给出三种遍历方法。原创 2014-06-17 14:32:19 · 3438 阅读 · 0 评论 -
一步一步认识C++STL中的迭代器
既然“指针”的使用者一不小心就可能导致内存泄漏,那么我们如何能够使得指针的使用变得更安全呢?从C++面向对象的角度分析,我们有没有可能将“指针”封装起来,使得用户不直接接触指针,而使用一个封装后的对象来替代指针的操作呢? 答案是显然的,“智能指针”(smart pointer)正解决这类问题,尤其是在防止内存泄漏方面做得非常突出。C++标准库std中提供了一种“智能指针类”名为"原创 2014-06-14 21:02:35 · 2499 阅读 · 0 评论 -
STL版本简介
STL原创 2014-06-14 09:05:44 · 1372 阅读 · 0 评论 -
STL之容器适配器queue的实现框架
对于接触过数据结构的人来说,队列并不陌生,它是一种FIFO(first in first out)的数据结构。与栈相比,队列的不同之处在于:(1)队列是一种先进先出的数据结构,而栈则是一种后进先出的数据结构;(2)队列支持首尾两端的访问操作,而栈只支持一端(即顶端)的访问操作;(3)队列从队尾插入,从队首弹出;而栈的插入和弹出都位于栈顶。原创 2014-06-25 13:38:50 · 1479 阅读 · 0 评论 -
STL之容器适配器stack的实现框架
一提到适配器(adapter),我们就想到了早期用电话线上网所用的调制解调器,俗称“猫”,“猫”的作用是实现数模转化和模数转化,在客户端,它可以将电话的模拟信息转化为我们计算机能够接收的数字信息,所以猫相当于一个转换器。再举个更加好理解的例子来说明"适配器“的含义。相信在我们每个人的家里都有插排,假设就这么一种情况,现在我们家里的墙壁上只有一个三角的插口,而我们的电视却是两个口,怎么办?毫无疑问,我们可以接一个新的插排,该插排至少有两个孔,一个是用于连接墙壁上的三角的插口,一个则是提供给电视剧用的两口的插口原创 2014-06-25 09:38:47 · 1388 阅读 · 0 评论 -
STL之heap相关操作算法
堆(heap)是一种非常重要的数据结构(这里我们讨论的是二叉堆),它是一棵满足特定条件的完全二叉树,堆的定义如下: 堆是一棵树完全二叉树,对于该完全二叉树中的每一个结点x,其关键字大于等于(或小于等于)其左右孩子结点,而其左右子树均为一个二叉堆。原创 2014-06-26 17:06:33 · 2372 阅读 · 0 评论 -
STL之list容器的实现框架
list的底层采用数据结构是环形的双向链表, 相对于vector容器,list容器插入和删除操作付出的代价要比vector容器小得多,但是list带有链表的天生弱点,就是不支持随机访问。从内置的迭代器角度分析,vector容器对应的迭代器为随机访问迭代器,而list容器内置的迭代器则为双向迭代器。原创 2014-06-20 19:06:45 · 980 阅读 · 0 评论