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

博客介绍了在InterSystems IRIS数据库中实现自定义数组类的过程,包括初始化、插入、获取、设置、删除和扩容等操作。通过示例代码展示了数组的使用,并探讨了超出数组范围插入数据的问题及删除元素后数组的变化。
摘要由CSDN通过智能技术生成

参考书  第二章 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 

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

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

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

求大佬解答。。。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值