参考书  第二章 Caché 算法与数据结构 数组原理_yaoxin521123的博客-CSDN博客

本人Cache'小白,欢迎指教和交流。本文为学习原作者的代码进行代码重现后的总结精炼。使用数据库:InterSystems IRIS。

示例:构建数组类并调用。

  1. 目录

    首先,构建数组类(仅展现代码结构)

    然后,写调用数组的类

    运行结果


首先,构建数组类(仅展现代码结构)

Class PHA.TYX.Arithmetic.Array Extends %RegisteredObject{Property array [ InitialExpression = {[]} ];Property size [ InitialExpression = 0 ];Property length [ InitialExpression = 0 ];Method init (capacity As %Integer) {}                    //初始化数组Method insert(index As %Integer,element As %Integer) {}  //插入数据Method get(capacity As %Integer) {}                      //获取数组下标的值Method set(index As %Integer,element As %Integer) {}     //给数组下标赋值Method length() {}Method output() {}Method delete(index As %Integer) As %Integer {}     Method resize()  {}                                       //给数组扩容}

然后,写调用数组的类

/// Function:调用数组类。第二章:数组原理
/// CreateDate:2022-8-24
/// Creator:tangyingxuan
/// Other: w ##class(PHA.TYX.Arithmetic).Array()
ClassMethod Array()
{
        //s $zt = "ErrArray"

// 注释原因:可能因为我是本地数据库,配置不对,代码运行到这报错
        s array = ##class(PHA.TYX.Arithmetic.Array).%New()
        d array.init(10)                                      // 数组下标范围为 0~9
        d array.insert(0,3)
        d array.insert(1,7)
        d array.insert(2,9)
        d array.insert(3,5)
        d array.insert(1,6)
        d array.insert(5,8)
        d array.insert(0,4)
        d array.insert(7,411)
        d array.insert(8,222)
        d array.insert(9,111)
        d array.insert(10,1343)                        // 插入不成功。超出数组下标范围
        d array.insert(11,23)                            // 插入不成功。超出数组下标范围

//d array.delete(1)                                // 删除掉1号节点后,后面的数据会向前补上
        //d array.delete(1)                               
        //d array.delete(5)

d array.output()
        q ""
        //ErrArray
        //q $ze
}

运行结果

USER>w ##class(PHA.TYX.Arithmetic).Array()
4
3
6
7
9
5
8
411
222
111

观察运行结果发现,以下两个插入的数据未能成功插入。原因:超出数据定义的范围。

d array.insert(10,1343)
        d array.insert(11,23)

释放调用类中delete注释后再运行。

观察可知,删除的数据为3,6,411。

USER>w ##class(PHA.TYX.Arithmetic).Array()
4
7
9
5
8
222
111

原数组为(长度为10) :    4 3 6 7 9 5 8 411 222 111

d array.delete(1)   对应删除的是  d array.insert(0,3)        数组变为4 6 7 9 5 8 411 222 111
d array.delete(1)   对应删除的是  d array.insert(1,6)        数组变为4 7 9 5 8 411 222 111

d array.delete(5)   对应删除的是  d array.insert(7,411)    数组变为4 7 9 5 8 222 111

【???】为什么数组的存储的顺序为 4 3 6 7 9 5 8 411 222 111(不懂...

求大佬解答。。。

Caché 实操《Caché 算法与数据结构-数组原理》学习笔记相关推荐

  1. (java)玩转算法系列-数据结构精讲[学习笔记](一)不要小瞧数组

    前言: 课程:玩转算法系列–数据结构精讲 更适合0算法基础入门到进阶(java版) 此处是个人学习笔记,用作回顾用途 不要小瞧数组 1.使用java中的数组 Main.java: public cla ...

  2. 【算法与数据结构】B-树学习笔记

    B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构.使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度.按照翻译,B 通常认为是Balance的简称.这个数据结构一 ...

  3. 邓俊辉《数据结构》-列表学习笔记

    2021.12.9 向量&列表的关系 向量结构中各数据项的物理存放位置与逻辑次序完全对应,可通过秩直接访问对应的元素,即"循秩访问".好像可以通过一个人的家庭住址找到那个人 ...

  4. GitHub上分享的常用算法和数据结构实现原理可视化系统

    一门编程语言入门之后,要想进阶,必须学习算法和数据结构,但是对于初学者来讲算法和数据结构和数据结构的实现原理和机制过于枯涩.抽象难懂. 这里为小伙伴们分享一个名为Algorithm Visualize ...

  5. OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co

    OpenCV学习笔记(四十一)--再看基础数据结构core 记得我在OpenCV学习笔记(四)--新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马 ...

  6. python数组 swig_学习笔记:安装swig+用SWIG封装C++为Python模块+SWIG使用说明

    这段时间一直在摸索swing,用它来封装C++代码来生成python脚步语言.并总结了swing从安装到配置再到代码封装编译生成动态库的整个过程,下面这篇文章都是我在实际的运用中的一些经验总结,分享给 ...

  7. 阿里云天池 Python训练营Task2: Python基础练习:数据结构大汇总 学习笔记

    本学习笔记为阿里云天池龙珠计划Python训练营的学习内容,学习链接为:https://tianchi.aliyun.com/specials/promotion/aicamppython?spm=5 ...

  8. Apriori算法python实现(数据挖掘学习笔记)

    目录 1.算法伪代码 2.算法代码 3.测试数据 4.结果 1.算法伪代码 输入:事务数据库D:最小支持度阈值. 输出:D中的频繁项集L. 方法:  L1 = find_frequent_1_item ...

  9. 捷联惯导算法与组合导航原理学习——四元数和姿态阵转换(二)

    四元数和姿态阵转换 学习资料参考: [1] 严恭敏,翁浚. 捷联惯导算法与组合导航原理[M]. 西安: 西北工业大学出版社, 2019.8. Quaternion.h #pragma once #in ...

最新文章

  1. 遍历页面上的所有控件
  2. 群晖NAS百度云Docker客户端下载目录没有权限的问题解决
  3. html局部可复制,截取网页局部区域css样式的方法和系统的制作方法
  4. 给计算机系统的资产分配的记号被称为什么,哈工大2015计算机复试试题(25页)-原创力文档...
  5. 爬虫基本原理及Request和Response分析
  6. int arr 13 java,java学习13 - 数组的定义、操作、异常、二维数组
  7. 《Improving Langugage Understanding by Generative Pre-Tranining》 —— GPT
  8. java thread join()_Java中Thread.join()的使用方法
  9. webrtc 静音检测(二)
  10. fastjson android 版本,fastjson 1.1.58.android 发布,Bug 修复版本
  11. vue-router 懒加载优化
  12. python定义数据框大小_python – 如何设置框架的最小和最大高度或宽度?
  13. 开关电源设计入门到精通系列--序
  14. 极光im java,连接极光异常是什么原因
  15. 计算机硬件维修的步骤和方法,计算机硬件组装与维护教程
  16. WIN10/WIN11 优启动 GHOST
  17. JAVA简单项目购物系统的整个开发过程详解(内含源码和注释)
  18. 天津大学仁爱学院计算机科学与技术学费,天津大学仁爱学院计算机科学与技术专业2016年在山西理科高考录取最低分数线...
  19. java链表奇数倒序偶数顺序_将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变。...
  20. python画圆形螺旋线_Python写的弹球小游戏

热门文章

  1. 计算机程序ppt,计算机和计算机程序.ppt
  2. mysql numeric 空值_mysql数据库不能添加NULL值,该怎么解决 - numeric
  3. CC2530的中断操作----按键控制led灯亮灭
  4. 原理图端口符号_200 一步步开始学习制作PCBamp;PCBA--绘制原理图
  5. [4G5G专题-79]:流程 - 4G LTE 寻呼流程Paging
  6. 电脑操作精典秘籍60式【实用】
  7. elementary OS 5 Juno (Pantheon) 安装后配置总结(干货很多)
  8. 【路径规划】基于粒子群算法求解带时间窗的车辆路径规划问题VRPTW模型matlab源码
  9. 利用SPARQLWrapper包从dbpedia中获取实体
  10. 血脂测试软件,血脂检测,最全解读!