当前课程知识点:数据结构(上) > 第二章 向量(上) > (c)无序向量 > 02C-2: 循秩访问
我们首先讨论
向量元素的访问
表面上看 这并不是什么问题
因为在向量ADT中
已经定义了两个标准的接口
get和put
通过它们 我们已经可以
自如地来读或者是写
向量中特定的元素
然后我们说 这两种接口
在形式上 还不是那么简洁
也不够直观
回忆一下在数组中
那种直接地访问方式
我们就会发现
原来那种方式
会更加的便捷
我们可以直接地说
在数组中的 第多少号元素
我们很希望能够
向量也具有这样的特性
可以直接通过这种形式
从向量中取出
或者反过来向其中写入
第几号元素
那么可否继续沿用
这种下标式的方式呢?
好消息是可以
为此只需要对下标操作符
这个方括号对 进行重载
具体地 像下面所写的这样
对于任何一个指定的Rank r
我们只需要在内部数据区中
取出对应的第r号元素
此后 凡是需要引用
向量中的某个特定的
比如说Rank为r的这个元素
就可以直接以这样一种
类似于数组的形式进行引用
请注意 这种引用
可以作为右值 也就是说
以这种类似数组形式进行运算
并且将运算的结果
向左侧赋值给某一变量
而反过来 计算的结果
也可以赋值给
向量中某一个元素
也就是作为左值
作为左值 之所以能够实现
得益于这个接口返回值
是一个引用
既然向量是源自
并且脱胎于数组
所以在这里继续沿用
它那种直观而直接地访问方式
也就不足为怪了
在这里 我们再强调一下
这种访问方式中
至关重要的是“秩”
也因此我们称之为
循秩访问方式
需要说明的一点是
为了便于讲解
我们在这门课中
往往会采用一些简易的方式
来处理算法可能遇到的
意外或者是错误
比如说在这里
我们对于入口参数r
并没有做过多的检查
而是简易地 在入口处
增设了一个断言
用以提醒或者是要求使用者
保证入口参数r
能够在合理的范围之内
那么在真正的实际应用中
要做更为严格的处理
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)计算
--演示
--(a)计算--作业
-(b)计算模型
-(b)计算模型--作业
-(c)大O记号
-(c)大O记号--作业
-(d)算法分析
-(d)算法分析--作业
-(e)迭代与递归
-(e)迭代与递归--作业
-(xc)动态规划
-- 演示
-(xc)动态规划--作业
-本章测验--作业
-(a)接口与实现
--02A-5 复制
-(a)接口与实现--作业
-(b)可扩充向量
-(b)可扩充向量--作业
-(c)无序向量
--02C-1 概述
--02C-3 插入
--02C-6 查找
--02C-8 遍历
-(c)无序向量--作业
-(d1)有序向量:唯一化
-(d1)有序向量:唯一化--作业
-(d2)有序向量:二分查找
-(d2)有序向量:二分查找--作业
-(d3)有序向量:Fibonacci查找
-(d3)有序向量:Fibonacci查找--作业
-(d4)有序向量:二分查找(改进)
-(d4)有序向量:二分查找(改进)--作业
-(d5)有序向量:插值查找
-第二章 向量(下)--(d5)有序向量:插值查找
-(e)起泡排序
--02E-2 改进
--02E-3 反例
-(e)起泡排序--作业
-(f)归并排序
-(f)归并排序--作业
-本章测验--作业
-(a)接口与实现
--03A-4 实现
-(a)接口与实现--作业
-(b)无序列表
--03B-2 查找
-(b)无序列表--作业
-(c)有序列表
--03C-3 查找
-(c)有序列表--作业
-(d)选择排序
--03D-1 构思
--03D-2 实例
--03D-3 实现
--03D-4 推敲
--03D-6 性能
-(d)选择排序--作业
-(e)插入排序
--03E-1 经验
--03E-2 构思
--03E-3 对比
--03E-4 实例
--03E-5 实现
-(e)插入排序--作业
-(xd)习题辅导:LightHouse
-本章测验--作业
- (a)栈接口与实现
--04A-1 栈
--04A-2 实例
--04A-3 实现
- (a)栈接口与实现--作业
-(c1)栈应用:进制转换
-第四章 栈与队列--(c1)栈应用:进制转换
-(c2)栈应用:括号匹配
-(c2)栈应用:括号匹配--作业
-(c3)栈应用:栈混洗
-第四章 栈与队列--(c3)栈应用:栈混洗
-(c4)栈应用:中缀表达式求值
-(c4)栈应用:中缀表达式求值--作业
-(c5)栈应用:逆波兰表达式
-第四章 栈与队列--(c5)栈应用:逆波兰表达式
-(d)队列接口与实现
--04D-1 接口
--04D-2 实例
--04D-3 实现
-第四章 栈与队列--本章测验
-(a)树
--05A-1 动机
--05A-2 应用
-(a)树--作业
-(b)树的表示
--05B-2 父亲
--05B-3 孩子
-第五章 二叉树--(b)树的表示
-(c)二叉树
-(c)二叉树--作业
-(d)二叉树实现
-(d)二叉树实现--作业
-(e1)先序遍历
-(e1)先序遍历--作业
-(e2)中序遍历
-第五章 二叉树--(e2)中序遍历
-(e4)层次遍历
-第五章 二叉树--(e4)层次遍历
-(e5)重构
-(e5)重构--作业
-本章测验--作业
-(a)概述
-(a)概述--作业
-(b1)邻接矩阵
-(b1)邻接矩阵--作业
-(c)广度优先搜索
--06C-2 策略
--06C-3 实现
--06C-5 实例
-(c)广度优先搜索--作业
-(d)深度优先搜索
--06D-1 算法
--06D-2 框架
--06D-3 细节
-(d)深度优先搜索--作业
-第六章 图--本章测验