这段代码什么意思 m_listSnake.clear(); SNAKE sTemp{}; sTemp.nCol = 8; sTemp.nRow = 8; for (int i = 0; i < 5; i++) { m_listSnake.push_back(sTemp); sTemp.nCol++; }
时间: 2024-04-02 18:34:28 浏览: 67
这段代码是一个函数,用于初始化蛇的身体。在函数中,首先调用 m_listSnake.clear() 函数,清空蛇的身体链表。然后,定义一个临时变量 sTemp,表示蛇的一个身体块,将其行和列数分别设置为 8。接下来,使用 for 循环,向蛇的身体链表中添加 5 个身体块。在循环中,首先将 sTemp 身体块添加到链表末尾,然后将 sTemp 的列数加 1,以便将下一个身体块添加到蛇的右侧。最终,循环结束后,蛇的身体链表中包含了 5 个身体块,位置依次为 (8,8), (9,8), (10,8), (11,8), (12,8)。
相关问题
delimiter $$ CREATE FUNCTION `getChildidList`(rootId varchar(38)) RETURNS text DETERMINISTIC BEGIN DECLARE sTemp text; DECLARE sTempChd text; SET@@group_concat_max_len = 102400; SET sTemp = '$'; SET sTempChd = rootId; WHILE sTempChd IS NOT NULL DO SET sTemp = concat(sTemp, ',', sTempChd); SELECT group_concat(ORGA001) INTO sTempChd FROM hrsw_t_organ WHERE FIND_IN_SET(ORGA002, sTempChd) > 0; END WHILE; SET@@group_concat_max_len = 1024; RETURN SUBSTRING(sTemp,3); END; $$ 使用Oracle重写,Oracle版本为12c
对于这个MySQL函数,可以使用以下语句在Oracle 12c中进行重写:
CREATE OR REPLACE FUNCTION getChildidList(rootId VARCHAR2)
RETURN VARCHAR2
DETERMINISTIC
IS
sTemp VARCHAR2(32767);
sTempChd VARCHAR2(32767);
BEGIN
sTemp := '$';
sTempChd := rootId;
WHILE sTempChd IS NOT NULL LOOP
sTemp := sTemp || ',' || sTempChd;
SELECT LISTAGG(ORGA001, ',') WITHIN GROUP (ORDER BY ORGA001) INTO sTempChd
FROM hrsw_t_organ
WHERE REGEXP_LIKE(sTempChd, '(^|,)'|| ORGA002 ||'(,|$)');
END LOOP;
RETURN SUBSTR(sTemp, 3);
END;
/
需要注意的是,Oracle没有像MySQL一样的group_concat函数,可以使用LISTAGG函数来代替。同时,Oracle中没有FIND_IN_SET函数,可以使用正则表达式来实现类似的功能。在上面的代码中,使用REGEXP_LIKE函数来判断sTempChd是否包含ORGA002。
for(i=0;i<len-1;i++) for(j=i+1;j<len;j++) if(peo[i].room_num>peo[j].room_num) { stemp=peo[i];peo[i]=peo[j];peo[j]=stemp; }
这是一个经典的冒泡排序算法,用于按照房间号对结构体数组peo中的元素进行升序排序。具体实现是通过两层循环嵌套,每次比较相邻两个元素的房间号大小,如果前面的大于后面的,就交换它们的位置。这样,每一轮循环都会将最大(或最小)的元素“冒泡”到数组的末尾,直到所有元素都按照房间号升序排列。排序结果存储在原数组peo中。
阅读全文