0

我有一个工作(好吧,可构建,但仍然是 WIP)游戏,我不久前使用 XNA 在 C# 中编码,现在我正在将游戏转换为 C++。在转换我的一些方法时,我遇到了一个错误,即我无法真正找到与某些 Array 方法(例如 FindAll、Find 和 Exists)等效的任何东西。我正在使用向量和任何等效方法的帮助以及如何实现它会非常有帮助。

例如,在 C# 中,我有:

if (Array.Exists(tileList, tile => tile.Position.X == e.Position.X))

其中 e 是某个实体,tileList 是游戏中所有棋子的数组,而 tile 显然是数组中的棋子。

如何在 C++ 中创建具有几乎相同功能的东西?

4

1 回答 1

2

看起来你可能想要这样的东西:

if (std::any_of(tileList.begin(), tileList.end(), 
                [](tile e) { return tile.position.X == e.Position.X; }))
    // whatever

如果您有较旧的编译器(std::any_of在 C++11 中添加,因此较旧的编译器没有),您可以使用std::findorstd::find_if代替。正如您可能猜到的那样,这些尝试找到匹配元素的位置,而不仅仅是告诉您是否存在,因此使用起来会有点笨拙,但不会非常笨拙(基本上,您必须比较返回的反对tileList.end()的位置,看看你是否有比赛)。

于 2013-05-27T06:25:22.483 回答