我有一个工作的(好吧,可构建,但仍然是 WIP)游戏,我前阵子使用 XNA 在 C# 中编码,现在我正在将游戏转换为 C++。在转换我的一些方法时,我遇到了这样的错误,即我无法真正找到与某些 Array 方法(例如 FindAll、Find 和 Exists)等效的任何东西。我正在使用 vector ,任何关于等效方法的帮助以及如何实现它都会非常有帮助。
例如,在 C# 中我有:
if (Array.Exists(tileList, tile => tile.Position.X == e.Position.X))
其中 e 是某个实体,tileList 是游戏中所有方 block 的数组,而 tile 显然是数组中的方 block 。
我如何在 C++ 中创建具有几乎相同功能的东西?
最佳答案
看起来你可能想要这样的东西:
if (std::any_of(tileList.begin(), tileList.end(),
[](tile e) { return tile.position.X == e.Position.X; }))
// whatever
如果你有一个旧的编译器(std::any_of
是在 C++11 中添加的,所以旧的编译器没有它)你可以使用 std::find
或 std::find_if
代替。正如您可能猜到的那样,这些尝试找到匹配元素的位置,而不仅仅是告诉您是否存在,因此使用起来会有点笨拙,但不会那么彻底(基本上,您必须比较返回的定位 tileList.end()
以查看您是否匹配)。
关于c++ - C# 到 C++ 的转换 : Searching Arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16767281/