没有合适的资源?快使用搜索试试~ 我知道了~
浅谈C++容器.pdf
需积分: 12 28 下载量 60 浏览量
2010-01-16
14:05:03
上传
评论 1
收藏 275KB PDF 举报
温馨提示
试读
14页
浅谈C++容器.pdf 浅谈C++容器.pdf 浅谈C++容器.pdf 浅谈C++容器.pdf
资源详情
资源评论
资源推荐
浅谈 C++容器
1
浅谈 C++容器
来自:http://blog.csdn.net/acosoft
(一)
在面向对象的语言中,大多引入了容器的概念。那么什么是容器?其实本质上就是一组相同
类型对象的集合,但是它又不仅仅像数组那样简单,它实现了比数组更复杂的数据结构,当
然也实现了比数组更强大的功能。C++标准模板库里提供了 10 种通用的容器类,它基本上
可以解决程序中遇到的大多数问题。
现在我主要来说明这 10 种通用容器的功能用途以及相互之间的相同与异同。但是在这里,
我不提倡一开始就着手从这 10 种容器开始,因为这样恐怕在随后的理解上产生很多困难,
更重要的是不能从本质上更清楚的理解容器。我认为在此之前先了解一下数据结构的基本概
念是很必要的,因为容器的概念是基于数据结构的基本知识,实际上这些容器就是对数据结
构提炼的产物,或者说每一个容器就是对某一种数据结构的实例化。容器是由数据结构而来,
只有了解数据结构才能理解容器的本质。
数据结构的概念提出于上世纪 80 年代,它是随着程序语言结构化设计的诞生而兴起。数据
结构主要包含两块内容:数据结构和算法。曾经在计算机界有这样一个公式:数据结构+算
法=程序,这种思想对程序设计产生着深刻的影响,即使是现在,它依旧是计算机程序设计
的基础,可见它的重要性。随着面向对象程序设计的发展数据结构也在进一步的发展和变化,
它在未来也是程序设计不可或缺的基础之一。数据结构如此之重要,但是它的内容太过于复
杂庞大,在这里就 C++通用容器所用到的基础数据结构知识作以简单介绍。
计算机运行实质上就是在处理一些数据。这些数据对计算机来说不是杂乱无章的,而是有内
在的联系,这种联系也许对人类思维来说不是一目了然的,但计算机能清楚的认识到。正是
这种联系,大量的复杂的数据才能得到合理的组织和有效的处理。数据结构就是研究这些数
浅谈 C++容器
2
据以及它们之间的联系,还有在这种联系下对数据的操作。
在数据结构里对数据的研究主要从三个方面着手:
数据的逻辑结构
数据的存储结构
数据的操作
数据元素之间的相互联系方式称为数据的逻辑结构
。数据的逻辑结构是对数据元素之间逻辑
关系的描述,它可以用一个数据元素的集合和定义在此集合上的若干关系来表示。数据的逻
辑结构经常被简称为数据结构。
按照数据的逻辑结构来分,有两种形式:线性结构和非线性结构。线性结构是指除第一个和
最后一个数据元素外,每个数据元素有且只有一个前驱元素和一个后继元素,而非线性数据
结构则会有零个或多个前驱元素和零个或多个后继元素。
数据元素在计算机中的存储表示方式称为数据的存储结构
,也称物理结构。任何需要计算机
进行管理和处理的数据元素都必须首先按某种方式存储在计算机中,数据存储结构能正确地
表示出数据元素间的逻辑关系。
按照数据的存储结构来分,有两种类型:顺序存储结构和链式存储结构。顺序存储结构是把
数据元素存储在一块连续地址空间的内存中,其特点是逻辑上相邻的数据元素在物理上(即
内存存储位置上)也相邻,数据间的逻辑关系表现在数据元素的存储位置关系上。链式存储
结构的关键是使用节点,节点是由数据元素域与指针域组合的一个整体,指针将相互关联的
节点衔接起来。其特点是逻辑上相邻的元素在物理上不一定相邻,数据间的逻辑关系表现在
节点的衔接关系上。
数据的逻辑结构是从逻辑关系角度观察数据,它与数据的存储无关,是独立于计算机的。而
数据的存储结构是逻辑结构在计算机内存中的实现,它是计算机处理的逻辑。
浅谈 C++容器
3
数据操作是指对一种数据类型的数据元素进行的某种处理
。数据的操作是定义在数据的逻辑
结构上的,每种逻辑结构都有一个操作的集合,不同的逻辑结构有不同的操作。操作的具体
实现与存储结构有关。对于常用的数据结构的操作主要包括以下几种:访问元素、统计元素
个数、更新元素、插入元素、删除元素、查找元素以及排序元素等。
(二)
上面从整体上说明了数据结构的概念和分类,下面就具体的几种常用的数据结构作以说明。
线性表
数据结构中最简单最基本的结构是线性表。线性表是相同类型的数据元素的有限序列,数据
元素之间具有顺序关系。从数据的存储结构上线性表可以分为顺序表和链表两类。顺序表即
是对线性结构使用顺序存储结构的方式,链表即是对线性结构使用链式存储结构的方式。其
两者的特点就是逻辑的线性结构对不同存储结构的实现。顺序表是一组连续的存储单元顺序
存放的线性的数据元素,数据元素在内存的物理存储次序与他们在线性表中的逻辑次序是一
致的。链表是将线性的数据元素存放在节点上,节点包含数据元素和指针,指针保存了各节
点元素之间的逻辑关系。这些节点有逻辑上的次序关系,但在存储结构中没有次序关系,即
在内存中没有在连续的存储单元。从其存储特点上看,顺序表检索性能非常好,因为它存储
在连续的内存块中,而链表的插入和删除性能非常好,因为它在内存中操作一个元素不会影
响到其它任何元素。
栈(stack)
栈是一种特殊的线性表。其插入和删除只允许在线性表的一端进行。允许操作的一端称为栈
顶,不允许操作的一端称为栈底。由于栈的特点,每次插入或删除都是操作最后的元素,所
以栈是“后进先出”表。
剩余13页未读,继续阅读
shihangku
- 粉丝: 398
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0