c++ - for each 和 for_each 有什么区别?
问题描述
我接手了一个旧代码,需要使用 JNI 调用。在代码中看到了 的用法for each( in )
,但是这段代码在Linux下无法编译。
我很想知道for each
是怎么生成的,可以使用哪些平台,在Linux下编译的时候有没有?
我正在尝试了解 的语法for each
,但是几乎无法找到此信息,但有很多for_each
用法。
在windows平台上,我只用过Visual Studio 2013 (v120)
编译成功,v14之后的版本异常。
在Linux平台下,我使用如下命令编译,报错很多。结果如下:
g++ -I/usr/java/jdk1.8.0_191/include/ -I/usr/java/jdk1.8.0_191/include/linux/ -fPIC -shared -o ErmjJNI.so *.cpp -pthread -std=c++11
ErmjAI.cpp: In member function ‘virtual void ErmjAI::initGame(size_t, size_t, const std::vector<std::vector<int> >&, std::string, std::string)’:
ErmjAI.cpp:74:8: error: expected ‘(’ before ‘each’
for each (size_t tile in tiles[i])
^
ErmjAI.cpp:74:21: error: expected primary-expression before ‘tile’
for each (size_t tile in tiles[i])
^
ErmjAI.cpp:74:37: error: ‘each’ was not declared in this scope
for each (size_t tile in tiles[i])
^
ErmjAI.cpp:75:4: error: expected ‘;’ before ‘{’ token
{
^
ErmjAI.cpp:3346:1: error: expected primary-expression at end of input
}
我已经在这个(http://www.cplusplus.com/search.do?q=for+each)网站上查询了相关的API,但没有任何收获。
这样的代码太多了,我已经没耐心了,下面列举几个例子。
for each (size_t tile in tiles[i])
{
if (tile<=33)
{
tNum[tile]++;
_unseen_tiles_num[tile]--;
}
else
{
m_vecHua[i].push_back(tile);
}
}
- 我很想知道如何
for each
在Linux下编译语法。 - 我想知道.net的历史和使用平台
for each
。 - 我想更多地了解我应该如何理解这一点,而不是像现在这样问问题。
解决方案
for each, in
是 Microsoft 编译器中的非标准语法,即使他们也不推荐使用。我建议您更改代码以使用基于 C++11范围的 for循环。这将得到标准的符合编译器的支持。
for (size_t tile : tiles[i])
{
// your code
}
推荐阅读
- r - mutate_at 仅满足特定条件的变量
- image-processing - 水印为二维条码
- java - 搜索 ArrayList 时出现 Java JSON ClassCastException
- node.js - socket.emit 从浏览器到浏览器不触发
- c - 结构数组的动态内存分配
- json - 如何检查post请求中json.body中是否有空值
- firebase - 刷新页面时显示从 Firebase 上传的图像时出现问题
- android - 多模块应用程序中的 Firebase Analytics - 如何?
- media-queries - 响应式媒体查询问题打破了将浏览器拖到更小的尺寸
- java - 如何在java中获得连续的周数和年份?