for和for_each之间有什么区别?

HuL*_*uLu 4 c++ linux g++

我接管了旧代码,需要使用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
Run Code Online (Sandbox Code Playgroud)
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
 }
Run Code Online (Sandbox Code Playgroud)

我已经在此(http://www.cplusplus.com/search.do?q=for+each)网站上查询了相关的API,但没有任何帮助。

这样的代码太多了,我已经失去耐心了,下面列出了一些示例。

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
Run Code Online (Sandbox Code Playgroud)
  • 我很想知道如何for each在Linux下编译语法。
  • 我想知道的历史和使用平台for each
  • 我想更多地了解我应该如何理解这一点,而不是像现在这样问问题。

Bla*_*ace 6

for each, in是Microsoft编译器中的非标准语法,即使他们不建议使用。我建议您更改代码以使用基于C ++ 11 的基于范围的for循环。符合标准的编译器将支持该功能。

for (size_t tile : tiles[i])
{
    // your code
}
Run Code Online (Sandbox Code Playgroud)