Houdini VEX(十五)数组相关函数

2019-08-07  本文已影响0人  Joe_Game

一、数组相关函数

int num[10] = {5,2,3,3,4,8,1}; //用户设置的初始长度会被忽略
printf('%s\n',num); 
printf('=================================\n');

resize(num,10);    //设置数组的长度,变长,新值为0或''
printf('%s\n',num);//注意这类function不返回数据,而直接修改所传入的数组变量
printf('=================================\n');

resize(num,6);     //设置数组的长度,变短,当然会删去已有元素
printf('%s\n',num);
printf('=================================\n');

string word[] = {'$','HIP','/'}; //创建字符串数组
printf('%s\n',word         );
printf('%s\n',len(word)    ); //len(array) 返回数组的长度(元素数量)
printf('%s\n',len(word[1]) ); //len(string) 返回字符的数量
printf('=================================\n');

string last = pop(word); //pop() 将数组最后一个元素抽去并返回,数组长度减一
int numm[] = {5,2,3,3,4,8,1};
printf('%s\n',last ); 
printf('%s\n',word ); 
pop(word,0);             //依据id将指定元素抽离
printf('%s\n',word );
pop(numm,-2);             //删去倒数第二个
printf('%s\n',numm ); 
//removeindex(&array[], index)有相同效果 
int ture = removevalue(numm,3); //删除数组中发现的第一个数值为3的元素,
printf('%s\n',ture ); //删除成功返回1,否则返回0
printf('%s\n',numm );
printf('=================================\n');

append(word,'/geo');     //在数组的末尾添加一个元素,相同功能的还有push()
word[5] = '/agents';
append(word, {'/zombie','/clip'} ); //在数组的末尾拼接另一个数组(literal)
string test[] = {'/walk'}; 
append(word,test);                  //在数组的末尾拼接另一个数组(variable)
printf('%s\n',word ); 
printf('=================================\n');

int pts[] = array(1, 2.5, 'k', {5,4,3} ); //用 各种数据和变量 创建一个数组
printf('%s\n',pts );                      //都会被转成指定类型,这里是整数
printf('=================================\n');

vector  pos[] = { {1,2,3}, {4,5,6} };
matrix3 rot[] = { {{1,0,0}, {0,1,0}, {0,0,1}} , {{0,0,2}, {2,0,0}, {0,2,0}} };
float posfloat[] = serialize(pos); //将向量数组 展平 成浮点数组
float rotfloat[] = serialize(rot); //将矩阵数组 展平 ,每个分量都是一个浮点元素
printf('%s\n',posfloat ); 
printf('%s\n',rotfloat );
printf('=================================\n');

vector vel[];
matrix3 scale[];
float flt[] = { 1, 1, 0, 1, 2, 0, 3, 1, 3 };
vel = unserialize(flt);  //将浮点数组 组合 成向量数组,3个浮点一个向量
scale = unserialize(flt);//将浮点数组 组合 成矩阵数组
printf('%s\n',vel );
printf('%s\n',scale );
printf('=================================\n');

int number[] = { 5, 2, 3, 1, 4, 6, 7, 9, 0 };
printf('%s\n',min(number) );
printf('%s\n',max(number) );
printf('%s\n',avg(number) );
printf('%s\n',sort(number) );//返回新的排好序的数组,排序方式从小到大,原数组不变
printf('%s\n',argsort(number) );//返回数组,用这个数组的每一个值去给原数组排序,就是从小到大的
int sorted[];
for(int i=0; i<len(number); ++i)
{
    int temp[] = argsort(number);
    sorted[i] = number[temp[i]];
}
printf('%s\n',sorted );
float re[] = reorder(flt,argsort(flt));
printf('%s\n',re ); 
reverse(sorted);//返回新的数组,反转顺序,原数组不变,还可以用来反转字符串"hello" -> "olleh"
printf('%s\n',reverse(sorted) );
printf('=================================\n');

int digit[] = { 5, 2, 3, 1, 4, 6, 7, 9, 0 };
insert(digit,1,23);  //在第n 号 元素前面插入元素
insert(digit,-1,43); //在倒数第n 个 元素前面插入元素 
printf('%s\n',digit );
int a[] = {8,8,8};
insert(digit,3,a);   //插入数组变量
printf('%s\n',digit );
printf('=================================\n');

int data[] = { 5, 2, 3, 1, 4, 6, 7, 9, 0 };
printf('%s\n', isvalidindex(data,-10) );
//该数组序号范围0~8或 -1 ~ -9(倒数第一个~倒数第九个)
//如果序号在这数组中有,isvalidindex()返回真,否则返回假
//等价于index < len(array) && index >= -len(array)
//          这个例子中 id<9 && id>=-9  
printf('=================================\n');

//find() 回看自制neighbours函数视频
上一篇下一篇

猜你喜欢

热点阅读