一、数组相关函数
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函数视频
网友评论