[原创]给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)
f4800 发表于 2022-3-7 08:45
从侧面说明美国公司的任何软件 都是留有大量的后门的 美国人不可靠
所有软件都这样吧,中望有些指令是大于128的,和桌子不兼容。桌子fas只有106个指令 baitang36 发表于 2022-3-6 20:55
autolisp有几千个
从侧面说明美国公司的任何软件 都是留有大量的后门的 美国人不可靠 清清绿茶 发表于 2024-10-20 19:44
这个向量数据类型,是否支持在两个元素之间插入一个元素,还有就是删除指定位置的某个元素。
没发现这样功能的保留函数 不 明 觉 厉 (vector-elt<- aa 8 3)怎么理解? 自贡黄明儒 发表于 2022-3-3 11:18
(vector-elt
把aa第三个元素改成8 怎么体现它比链表更优越? mahuan1279 发表于 2022-3-3 16:09
怎么体现它比链表更优越?
速度快,占内存少。
fas的很多系统数据都是用vector存储的。 未知函数,CAD未启用该函数。 mokson 发表于 2022-3-5 08:57
未知函数,CAD未启用该函数。
加载这个文件后才能用这些函数
baitang36 发表于 2022-3-5 15:30
加载这个文件后才能用这些函数
大哥感谢你了。 baitang36 发表于 2022-3-5 15:30
加载这个文件后才能用这些函数
非常好的好人,免费发布。
页:
[1]
2