VEX —— 数组Arrays

VEX语言中的数组操作指南
文章详细介绍了VEX语言中如何声明和使用数组,包括声明数组类型、初始化、访问与设置元素、切片、在数组和向量/矩阵间复制、循环遍历以及数组函数的运用,并提到了一些局限性,如不支持多维数组等。

目录

一,声明数组类型

二,访问与设置数组

三,数组切片

四,在数组和向量/矩阵之间复制

五,循环数组

六,数组函数的使用

七,局限


一,声明数组类型

通用格式:member_type var_name [ ]

  • 可在[ ]添加尺寸大小数字,但vex编译器会忽略此数字;
  • 在声明函数返回数组时,关键字function不可省略;
//声明变量
float my_array[];
vector vector_array[];
string str_array[];
//声明函数返回数组时,关键字function不可省略
function int[] myarray(int x,y){
    int tmp[] = array(x, y);
    return tmp;
}
printf("%d",myarray(1,2));

初始化

  • 初始化时可不给初始值,不会报警或报错,默认为空数组;
  • 可使用大括号{}初始化,成员用逗号隔开;因其是在编译时构造的,所以初始化值不可包含变量;
  • 也可使用array()函数,此函数是在运行时构造数组的,则可以使用变量;
vector an_array[] = { {1, 2, 3}, {2, 3, 4}, {4, 5, 6} };
function vector[] rgb_array() {return { {1, 0, 0}, {0, 1, 0}, {0, 0, 1} };}
string arr[] = {'ab', "cd"};
//使用array创建数组
int a,b,c,d;
a=b=c=d=1;
int my_array[] = array(a, b, c, d);
//指定标量值给矢量,则所有分量均为该标量值
vector an_array[] = {1, 2, 3};
//等价于an_array[] == { {1, 1, 1}, {2, 2, 2}, {3, 3, 3} }

二,访问与设置数组

使用格式:arrayname [index

  • 边界会在运行时检测,超出边界的访问会返回0或“”;可能会生成警告或运行时错误;
  • 超出边界的写入,将重置数组尺寸以适应数组大小;
  • 类似python风格的索引,意味着负索引将从数组末尾开始;
  • 此格式即可访问也可设置值,等价于getcomp、setcomp函数;
  • 也适用于vector和matrix类型;
//访问
int nums[] = { 0, 1, 2, 3, 4, 5 };
int n = nums[10];  // Returns 0
int b = nums[-2];  // Returns 4

string strs[] = { };
string s = strs[20];  //超边界访问 Returns ""

//访问matrix
float a = m3[0][1];
//访问和设置函数
int a[] = {1,2,3};
int b = getcomp(a,1); //类似a[1]
setcomp(a, 22, 1); //类似a[1]=22

三,数组切片

        可使用类似python切片的方法,提取子数组,等同于s

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值