VEXの配列操作

配列を要素を加える:append()

配列に配列を加えることもできる。

float array1[] = {1.2, 3.4, 5.6};
float array2[] = {4.0, 5.2, 1.8};

append(array1, array2);

printf('array1:' + sprintf('%g', array1) + '\n');
// array1:{1.2, 3.4, 5.6, 4, 5.2, 1.8}

配列を逆順に並び替える:reverse()

配列を逆順に並び替える

float array1[] = {1.2, 3.4, 5.6};
array1 = reverse(array1);

printf('array1:' + sprintf('%g', array1) + '\n');
// array1:{5.6, 3.4, 1.2}

配列から値を削除する:removevalue()

配列から値を削除する

int indices[] = {1, 23, 53, 62, 98, 101};
removevalue(indices, 53);

printf('ids:' + sprintf('%g', indices) + '\n');
// indices:{1, 23, 62, 98, 101}

配列から配列を削除するにはループ処理を行う

int indices[] = {1, 23, 53, 62, 98, 101};
int list[] = {1, 53, 62, 98};

for(int i = 0; i < len(list); i++)
{
    removevalue(indices, list[i]);
}

printf('indices:' + sprintf('%g', indices) + '\n');
// indices:{23, 101}

配列から値をインデックスで削除する:removeindex()

int array[] = {0, 1, 2, 3, 4, 5};

for(int i = 0; i < len(array); i++)
{
    if(i == 3) removeindex(array, 4);
    printf('i:' + sprintf('%g', i) + '\n');
    printf('array[i]:' + sprintf('%g', array[i]) + '\n');
    printf('array:' + sprintf('%g', array) + '\n');
}

removeindex()で削除した時点でループ処理に影響がでてずれる。

昇順に並び替える:sort()

昇順に並び替える

int indices[] = {45, 12, 53, 24, 98, 22};
indices = sort(indices);

printf('indices :' + sprintf('%g', indices) + '\n');
// indices :{12, 22, 24, 45, 53, 98}

値が含まれているか判定する:find()

配列内に値が含まれている調べてインデックスを返す(存在しない場合は配列数をマイナスした値が返る)

int array[] = {1, 3, 4, 6, 9};

int isExist = find(array, 2);
printf('isExist:' + sprintf('%g', isExist) + '\n');

// isExist:-6

重複の削除

find()を使う。

int array[] = {1, 3, 3, 4, 6, 9, 1, 6};
int result[];
foreach(int value;array)
{
    if(find(result, value) < 0)
        append(result, value);
}
printf('result:' + sprintf('%g', result) + '\n');
//result:{1, 3, 4, 6, 9}

配列のスライス

int nums[] = { 0, 1, 2, 3, 4, 5 };
int start[] = nums[0:2];  // { 0, 1 }
int end[] = nums[-2:];  // { 4, 5 }
int rev[] = nums[::-1];  // { 5, 4, 3, 2, 1, 0 }
int odd[] = nums[1::2]; // { 1, 3, 5 }

pop()

int list[] = {9, 4, 6, 2, 9, 2};
pop(list, 0);

printf('list:' + sprintf('%g', list) + '\n');
//list:{4, 6, 2, 9, 2};
タイトルとURLをコピーしました