这是我今天在计算机上进行的一项测试,我被要求实施具有两个功能的Gardner类-每个都将标记割下的Gardner站立的一块土地,并将Gardner移动3个单位到左还是右。如果Gardner的道路上有任何标有割据的土地,他将跳过该土地并继续前进到下一个土地。
我使用布尔变量向量对土地建模。我正在将std :: find()与正向迭代器一起使用,以查找未在正确方向修剪的陆地,而我正在向左方向使用反向迭代器。前向迭代器按预期工作。但是,反向迭代器产生了一些奇怪的结果。更具体地说,例如,在Visual Studio的调试器中,它显示反向迭代器指向的值为false(这是预期的),但是当我取消引用反向迭代器时,则为true。可以在下面的代码中复制该代码,我已附加了代码,感谢您的帮助。
var router = express.Router();
router.get('/tif/:test2/:one', (req, res) => {
res.send("Test two");
});
router.get('/tif/test1/:one', (req, res) => {
res.send("Test one");
});
module.exports = router;
答案 0 :(得分:0)
要了解反向迭代器的状况, 看一下reverse_iterator at cppreference。更具体地说,请看base() method:
基本迭代器引用 next (从
PART_Button
透视)到元素std::reverse_iterator::iterator_type
当前指向。那就是reverse_iterator
。
英语:
&*(rit.base() - 1) == &*rit
(反向迭代器的)将访问mLands的元素,该元素比*rit.base()
尚未访问的元素多。 *rit
和*rit
之间的这种转换使得可以使*rit.base()
逻辑上指向mLands.rend()
的第一个元素之后。它与mLands
的镜像等效,指向mLands.end()
的最后一个元素。
现在,了解在调试器中看到的内容。调试器很可能向您显示mLands
的值,该值指向rit.base()
中的元素早于mLands
的逻辑指向。这可以解释您在此处看到的差异。对于调试,如果不确定调试器将显示什么,这里最安全的方法是打印rit
的值或将其存储在临时变量中,然后在调试器中进行检查。