在C++语法的学习过程中,我们已经对模板有了基本的了解.泛型编程就是以模板为工具的.泛化的编程思想.本篇文章介绍了一些在之前的文章中没有涉及到的一些模板知识.泛型编程知识和几种容器.关于模板的一些重复知识在这里就不再进行赘述. 一.关于模板的知识点补充   1. 函数模板的参数推导与显式指定 通常情况下,我们一般采用参数的自动推导方式去使用函数模板.在自动推导时,为了确保推导的正确性,C++不允许任何形式的隐式类型转换. 这个限制就导致了如下的情况: template <class T> in…
2013-08-11 10:46:39 介绍STL模板的书,有两本比较经典: 一本是<Generic Programming and the STL>,中文翻译为<泛型编程与STL>,这本书由STL开发者 Matthew H.Austern编著,由STL之父alexander Stepanov等大师审核的,介绍STL思想及其使用技巧,适合初学者使用,中文版是由侯捷翻译的: 另一本书是<STL源码剖析>,是<深入浅出MFC>的作者侯捷编写的,介绍STL源代码的…
本篇文章在上一篇文章的基础上进一步介绍一些常用的容器以及STL的一些深入知识. 一. Stack和Queue 栈和队列是非常常用的两种数据结构,由deque适配而来.关于数据结构的知识这里就不在介绍了,仅介绍STL中的成员方法. stack 的基本操作有:入栈,如例:s.push(x);出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素.访问栈顶,如例:s.top()判断栈空,如例:s.empty(),当栈空时,返回true.访问栈中的元素个数,如例:s.size().…
欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1394600460.html 原创:STL非变易算法 - STL算法 作者:MilkCu(http://blog.csdn.net/milkcu) 本文地址:http://blog.csdn.net/milkcu/article/details/21114613 摘要:C++ STL标准模板库在数据结构和算法的时间领域发挥着重要作用,极大…
AVL树 AVL树定义:红黑树是一颗二叉搜索树,特别的是一棵保持高度平衡的二叉搜索树 AVL树特点: 每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1 AVL树插入: 说明:新增节点的平衡因子是0,新增节点是右节点,父节点平衡因子+1,新增节点是左节点,父节点平衡因子-1 插入新增节点后,父节点平衡因子变为0,说明节点插入在较矮的子树上,平衡没被破坏,高度也没变化,直接插入无需做任何处理 插入新增节点后,父节点平衡因子变为+1或是-1,说明插入前节点的平衡因子是0,平衡没被破坏,但是高度…
最近由于找工作需要,准备深入学习一下STL源码,我看的是侯捷所著的<STL源码剖析>.之所以看这本书主要是由于我过去曾经接触过一些台湾人,我一直觉得台湾人非常不错(这里不涉及任何政治,仅限个人感受),在技术上他们比较严谨,在为人处世上也非常谦虚,所以一些台湾的技术资料我觉得是值得一看的. 想要学习STL源码的设计,其实应该是从空间适配器(allocator)和迭代器(iterators)开始看起的,但是我没有对这两个部分做深入研究,主要原因是最近实在太忙,要写论文又要兼顾找工作,不能在这上面投…
目录 一丶List容器的存储结构 二丶丶STL中list容器的使用. 一丶List容器的存储结构 list容器底层是链表结构来维护的.跟vector不一样. vector是数组维护的.拥有连续内存.所以可以使用[] 运算符操作.list底层是链表维护.内存不连续.所以不能使用[]运算符. 且对比vector添加了新的方法.因为底层是链表.所以可以对头尾进行删除或者添加元素. 二丶丶STL中list容器的使用. #define _CRT_SECURE_NO_WARNINGS #include <s…
stl中容器有很多种 最简单的应该算是vector 一个空间连续的数组 他的构造函数有多个 以其中 template<typename T> vector(size_type n,const T& value)为例 vector(size_type n,const T& value)  -> fill_initialize(n,value) -> allocate_and_fill(n,value) 既然是 allocate  and  fill 那么就会调用分配器…
1.Vector是顺序容器.是一个动态数组.支持随机存取.插入.删除.查找等操作,在内存中是一块连续的空间.在原有空间不够情况下自己主动分配空间.添加为原来的两倍.vector随机存取效率高,可是在vector插入元素.须要移动的数目多.效率低下. 注意:vector动态添加大小时.并非在原空间之后持续新空间(由于无法保证原空间之后尚有可供配置的空间),而是以原大小的两倍另外配置一块较大的空间,然后将原内容拷贝过来.然后才開始在原内容之后构造新元素,并释放原空间. 因此.对vector的不论什么…
前言 容器,置物之所也.就是存放数据的地方. array(数组).list(串行).tree(树).stack(堆栈).queue(队列).hash table(杂凑表).set(集合).map(映像表)…等等. 容器按照存储的方式可以分为:序列式容器和关联式容器 序列式容器:容器里面的数据可以进行排序,但是不会自动排序,可以使用算法进行排序 关联式容器:容器里面的数据不可排序,以键值对的形式存储 Vector 和数组类似,区别是数组大小是固定,Vector可以动态改变,不用但是越界的问题 动态…