如何解决我需要帮助来了解此特定if语句完成的语法
我正在尝试跟进并分解pacman克隆的源代码。有一个if语句令我感到困惑。
void PacMan::queueDirection(Direction dir)
{
if (!directions.empty())
{
if (dir == -directions.front()) //this statement
{
std::queue<Direction> clear;
std::swap(directions,clear);
}
}
if(directions.size() < 2)
directions.push(dir);
}
我的问题是-directions.front()的-infront做什么?方向是一个队列。是否会将front()返回的引用乘以-1? 感谢您的帮助-请在下面将链接发布到整个项目所在的github。 https://github.com/HexagonNico/Pac-Man/blob/master/PacMan.cpp,如果您很喜欢的话。
解决方法
您粘贴的代码似乎具有以下意图:
如果队列开头的Direction实例Directions是作为此函数的参数提供的值的负数,则清除队列,并将提供的参数排队。
在这种情况下,“方向”类型是标题Directions.h
中定义的枚举enum Direction
{
Up = 1,Down = -1,Left = 2,Right = -2,Unset = 0
};
在这种情况下,否定Direction实例,恰恰相反。
作为示例,请考虑在调用函数时,值Direction :: Up位于队列的开头,并且函数的参数为Direction :: Down。在这种情况下,队列方向将被清除。我添加了example来使这一点更清楚。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。