Houdini VEX:数组函数

数组是存储相同类型数据的容器,数组的特点是有序的,有序性决定了数组具有索引与切片的功能。

  • 初始化

数组在变量或属性初始化的时候如果没有给初始值,也不会警告或报错,默认初始值是空数组,数组初始化一般是通过花括号{}或者数组函数array()。

int a[];
i[]@b;
int c[] = {1, 2, 3};
i[]@d = {100, 200, 300};
int e[] = array(0, $PI, 0);

printf("%g\n", a);
printf("%g\n", @b);
printf("%g\n", c);
printf("%g\n", @d);
printf("%g\n", e);

vector color[] = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};
  • 索引与切片
int array1[] = {100, 200, 300, 400, 500};

printf("%g\n", array1[:2]);
printf("%g\n", array1[-2:]);
printf("%g\n", array1[::-1]);
printf("%g\n", array1[-1:-3:-1]);
printf("%g\n", array1[1::2]);
printf("%g\n", array1[1:len(array1):2]);
  • 数组函数

    • void append(<type>&array[], <type>value)
    • int [] argsort(<type>value[])
    • <type>[] array(…)
    • void insert(string &str, int index, string value)
    • int isvalidindex(<type>&array[], int index)
    • int len(<type>array[])
    • <type> pop(<type>&array[])
    • void push(<type>&array[], <type>value)
    • <type> removeindex(<type>&array[], int index)
    • int removevalue(<type>&array[], <type>value)
    • <type>[] reorder(<type>values[], int indices[])
    • void resize(<type>&array[], int size)
    • <type>[] reverse(<type>values[])
    • <type>[] slice(<type>s[], int start, int end)
    • <type>[] slice(<type>s[], int start, int end, int step)
    • int [] sort(int values[])
  • 循环迭代

    • foreach (index, value; array) statement;
    • foreach (int index; element_type value; array) statement;
int an_array[] = {1, 2}

foreach (int num; an_array) {
    printf("%d", num);
}

string days[] = { "Mon", "Tue", "Wed", "Thu", "Fri" }
foreach (int i; string name; days) {
    printf("Day number %d is %s", i, name);
}
  • 类型转换
vector pos = {1.0, 2.0, 3.0};
float a[] = set(pos);
vector color = set(a);

参考文档: