概述

数据结构概述

数据包含数值型数据以及非数值型数据,数据元素是数据的基本单位,数据项是构成数据元素的不可分割的最小单位,数据类型分为简单类型和构造类型(或称为结构类型),数据结构是按照某种逻辑关系组织起来的一组数据,按一定的存储方式存储在计算机的存储器中,并在这些数据上定义了一组运算的集合,包含数据的逻辑结构,存储结构以及操作或运算。

  1. 数据的逻辑结构
    描述了数据相互间的关联形式或邻接形式,反应了数据内部的构成方式,定义了数据的本质特点。常见的有集合、线性结构(线性表,栈,队列,串等)、非线性结构(树结构,图结构等)。
  2. 数据的存储结构
    考虑如何在计算机的存储器中存储各个数据元素,并且反映数据元素之间的逻辑关系。包含顺序存储结构和链式存储结构。顺序存储结构用一组连续的存储单元一次存储各个数据元素,数据元素间的逻辑关系由存储单元的邻接关系来体现。链式存储结构用一组任意的存储单位存储各个数据元素,数据元素间的关系通常用指针来表示。
  3. 操作或运算

    数据的逻辑结构反映了数据内部的逻辑关系,是面向实际问题的;而存储结构是面向计算机具体实现的,其目标是将数据及其逻辑关系存储到计算机中。

STL简介

STL(Standard Template Library,标准模板类)是C++提供的一个基础模板集合,基本上达到了各种存储方法和相关算法的高度优化,STL已经是标准化组件,已完全被内置在编译器内。
C++标准中,STL被组织为以下的13个头文件:
<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、<memory>、<numeric>、<queue>、<set>、<stack>、<utility>
通常认为STL由空间管理器、迭代器、泛函、适配器、容器和算法6部分构成,其中前面4部分服务于后面2部分。

  • 空间管理器
    为容器类模板提供用户自定义的内存申请和释放功能,往往只有高级用户才有改变内存分配策略的需求,对于一般用户并不常用。
  • 迭代器
    类似于指针,存储某个对象的地址或者说只想某个对象,被称为广义指针。
  • 泛函
    如果某个类重载了函数调用运算符“()”,则成该类为泛函类,并称其对象为泛函。通过泛函可以为算法提供某种策略。例如,同一个排序算法,可以利用泛函完成对不同关键字进行升序或降序等各种排序策略。
  • 适配器
    适配器对象将自己与另外一个对象绑定,使对适配器对象的操作转换为对被绑定对象的操作。
  • 容器
    包含若干对象的数据结构,并提供少量操作接口。STL提供3中标准容器,后两类也统称为关联容器。
    -顺序容器 包含向量,列表,双端队列。
    -排序容器 包含结合,多重集合,映射以及多重映射,排序容器中元素位置一般通过键值大小关系确定,通过键值高效查找和读取元素。
    -哈希容器 包含哈希集合,哈希多重集合,哈希映射,哈希多重映射,哈希容器中的元素位置直接通过元素的键值确定,通过键值高效查找和读取元素。
  • 算法
    算法是STL得精髓,所有算法都采用函数模板的形式提供。STL中算法大致分为4类:日常事务类算法、查找类算法、排序类算法、工作类算法等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值