【发布时间】:2009-11-23 09:29:04
【问题描述】:
我有一个对象,我想在游戏中连续循环旅行。我在 std::vector 中有一系列坐标,我想将其用作航点。
有没有办法让std::vector<T>::iterator 循环(也称为循环器)?
我能想到的最好方法是拥有两个迭代器,然后每当第一个迭代器用尽时,将第二个迭代器的值分配给它(它不会用于做任何其他事情),但我什至不确定它是否会工作 - 赋值运算符将复制迭代器用于保存索引的任何内容还是仅被引用(因此在第二轮之后将无用)?
我希望对象永远在路径点行进(除非它被销毁,但在该方法中不会发生这种情况),但迭代器只会为每一帧调用一次并且必须返回,以便我可以更新其他对象在游戏中。
该解决方案必须适用于 gcc 和 microsoft 编译器(如果无法用标准 C++ 编写)。
【问题讨论】:
-
我已经写了一个这样的迭代器,所以它绝对可能 =) 我记得唯一的转折是比较运算符
-
另一方面,你真的需要
operator<吗?隐藏循环行为有点恶作剧!