c++ - C# 到 C++ 的转换 : Searching Arrays

标签 c++ arrays list vector lambda

我有一个工作的(好吧,可构建,但仍然是 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::findstd::find_if 代替。正如您可能猜到的那样,这些尝试找到匹配元素的位置,而不仅仅是告诉您是否存在,因此使用起来会有点笨拙,但不会那么彻底(基本上,您必须比较返回的定位 tileList.end() 以查看您是否匹配)。

关于c++ - C# 到 C++ 的转换 : Searching Arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16767281/

相关文章:

c++ - 结构中二维数组的动态内存分配

python - 在 Numpy 中,从两个数组中找出每对之间的欧氏距离

Python:如何在不创建范围的情况下计算范围的长度?

c# - 使用 LINQ 使用相同的值填充 List<string>

c# - .NET 列表排序在所有返回 0 后返回不同的顺序

c++ - 仅当您在 QML 中单击 Blackberry Cascades 模拟器时,您如何响应点击文本字段?

java - 如何从该数组中获取随机字符串作为获胜者打印?

c++ - 如何使用 directshow 从相机创建 avi?

c++ - 在 C++ 中有效地规范化数组

c++ - 为什么 mingw 4.4 说 <random> 需要 c++0x?