baitang36 发表于 2022-3-3 10:41:03

[原创]给autolisp增加一种数据类型vector

本帖最后由 baitang36 于 2022-3-4 08:15 编辑

vector是自动桌子没有公开的一种数据类型,它跟表有些类似,但更节省内存,操作起来更快,它还可以和表相互转换。
lisp表的数据结构是链表,它需要从头开始遍历,因此操作速度慢。vector没有这限制,可以从任何位置开始操作,因此速度更快。
vector一般翻译成向量,感觉不太确切。
princ一个vector会类似这样显示: #4(1 2 3 4),表示这个vector有4个元素,元素的列表在括号内。
经过研究,我基本弄明白了它的机理,发在这里大家一起试验吧。
我写了一个小程序syz-vector.fas,加载后就可以对vector进行操作了。
几个相关函数:
vector    建立一个vector
vector-length获取 vector的长度
list->vector    表转换成vector
vector->list   vector转换成表
vector-elt   获取vector的某个元素
vector-elt<-替换 vector的某个元素
vector-swap交换vector的某两个元素

试验例子:
命令: (vector1 2 3 4 5)
#5(1 2 3 4 5)

命令: (setq aa (vector 1 2 3 4 5))
#5(1 2 3 4 5)

命令: (vector-length aa)
5

命令: (vector->list aa)
(1 2 3 4 5)

命令: (list->vector '(2 3 4 5))
#4(2 3 4 5)

命令: (vector-elt aa 3)
4

命令: (vector-elt<- aa 8 3)
8
命令: (princ aa)
#5(1 2 3 8 5)

命令: (vector-swap aa 0 3)
#5(8 2 3 1 5)

命令: (vector-swap aa 1 4)
#5(8 5 3 1 2)





baitang36 发表于 2022-7-13 07:53:34

f4800 发表于 2022-3-7 08:45
从侧面说明美国公司的任何软件 都是留有大量的后门的       美国人不可靠

所有软件都这样吧,中望有些指令是大于128的,和桌子不兼容。桌子fas只有106个指令

f4800 发表于 2022-3-7 08:45:32

baitang36 发表于 2022-3-6 20:55
autolisp有几千个

从侧面说明美国公司的任何软件 都是留有大量的后门的       美国人不可靠

baitang36 发表于 2024-10-20 23:20:20

清清绿茶 发表于 2024-10-20 19:44
这个向量数据类型,是否支持在两个元素之间插入一个元素,还有就是删除指定位置的某个元素。

没发现这样功能的保留函数

masterlong 发表于 2022-3-3 10:47:18

不 明 觉 厉

自贡黄明儒 发表于 2022-3-3 11:18:48

(vector-elt<- aa 8 3)怎么理解?

baitang36 发表于 2022-3-3 11:57:56

自贡黄明儒 发表于 2022-3-3 11:18
(vector-elt

把aa第三个元素改成8

mahuan1279 发表于 2022-3-3 16:09:33

怎么体现它比链表更优越?

baitang36 发表于 2022-3-3 17:11:07

mahuan1279 发表于 2022-3-3 16:09
怎么体现它比链表更优越?

速度快,占内存少。
fas的很多系统数据都是用vector存储的。

mokson 发表于 2022-3-5 08:57:53

未知函数,CAD未启用该函数。

baitang36 发表于 2022-3-5 15:30:10

mokson 发表于 2022-3-5 08:57
未知函数,CAD未启用该函数。

加载这个文件后才能用这些函数

mokson 发表于 2022-3-5 16:25:05

baitang36 发表于 2022-3-5 15:30
加载这个文件后才能用这些函数

大哥感谢你了。

yanshengjiang 发表于 2022-3-6 08:25:49

baitang36 发表于 2022-3-5 15:30
加载这个文件后才能用这些函数

非常好的好人,免费发布。
页: [1] 2
查看完整版本: [原创]给autolisp增加一种数据类型vector