来源:我的博客站 OceanicKang |《C++ 数据结构(二)向量(1)接口与实现》
ADT VS DS
抽象数据类型(Abstract Data Type):数据模型 + 定义在该模型上的一组操作
抽象定义 | 外部的逻辑特性 | 操作 & 语义 |
一种定义 | 不考虑时间复杂度 | 不涉及数据的存储方式 |
数据结构(Data Structure):基于某种特定语言,实现 ADT 的一整套算法
具体实现 | 内部的表示与实现 | 完整的算法 |
多种实现 | 与复杂度密切相关 | 要考虑数据的具体存储机制 |
向量 ADT
从数组到向量
在 C/C++ 等高级语言中,数组 A[] 中的元素与 [0, n) 内的编号一一对应
反之,每个元素均由(非负)编号唯一指代,并可直接访问
A[i] 的物理地址 = A + i * s,s 为单个元素占用的空间量
故亦称作线性数组(linear array)
向量是数组的抽象与泛化,由一组元素按线性次序封装而成
1、各元素与 [0, n) 内的秩(rank)一一对应 // 循秩访问(call-by-rank)
2、元素的类型不限于基本类型
3、操作、管理维护更加简化、统一与安全
4、可更为便捷地参与复杂数据结构的定制与实现
向量接口
操作 | 功能 | 适用对象 |
---|---|---|
size() | 报告向量当前的规模(元素总数) | 向量 |