Arrays 如何在C+中使用多维数组的for each循环+;

Arrays 如何在C+中使用多维数组的for each循环+;,arrays,multidimensional-array,foreach,c++-cli,Arrays,Multidimensional Array,Foreach,C++ Cli,好的,首先你应该注意我使用的是VisualStudio2010。无论如何,我在for-each循环中得到了一个非常奇怪的错误,这对我来说毫无意义 BYTE CPUKeys[][0x10] = { {0x28,0x53,0x71,0xD9,0x7B,0x47,0xCC,0x50,0xAF,0x45,0x8D,0xB3,0xED,0x53,0x22,0x13},//Randy//encrypted {0x6E,0x38,0xB0,0xEF,0x6E,0x96,0x20,0x16,0x

好的,首先你应该注意我使用的是VisualStudio2010。无论如何,我在for-each循环中得到了一个非常奇怪的错误,这对我来说毫无意义

BYTE CPUKeys[][0x10] =
{
    {0x28,0x53,0x71,0xD9,0x7B,0x47,0xCC,0x50,0xAF,0x45,0x8D,0xB3,0xED,0x53,0x22,0x13},//Randy//encrypted
    {0x6E,0x38,0xB0,0xEF,0x6E,0x96,0x20,0x16,0xE5,0xCA,0x4B,0xE9,0x23,0x4E,0xC6,0xA5},//Josh//encrypted
    {0x95,0x2C,0x20,0x98,0xF9,0x99,0x28,0x0F,0xEE,0xA7,0x8F,0x48,0x58,0x01,0xB7,0x07},//Falcon//encrypted
    {0x64,0xDC,0x1E,0xFA,0xD2,0xAE,0x57,0x6C,0x0B,0xD0,0x39,0x6A,0x13,0x2C,0x91,0xE0},//Justin//encrypted
    {0x8D,0x82,0x6D,0x71,0x82,0xDC,0x83,0x8F,0x79,0x51,0xB8,0x7C,0x1F,0xC1,0xBF,0xD4},//Bypass//encrypted
    {0x27,0xF2,0xA7,0xF3,0xE2,0xDC,0x01,0x19,0x17,0xF4,0x11,0xFE,0xE9,0xB5,0x0C,0x2C},//Surge//encrypted
    {0x6D,0x7C,0x86,0x9A,0x6A,0xE1,0xD4,0x10,0x76,0x16,0x11,0x7C,0xED,0xB3,0x4D,0x56},//Noel//encrypted
    {0x3D,0x6C,0x88,0x8C,0x9D,0x3A,0xA5,0x40,0x64,0xDF,0xDF,0x8D,0x94,0xFD,0x28,0xF1},//XexRgh//encrypted
    {0x06,0x0D,0x8C,0xB6,0xB6,0x6D,0x29,0xD7,0x41,0xE1,0x13,0x35,0x84,0x80,0x68,0x31}//Zoobzy//encrypted
};
这是我的多维字节数组

for each(BYTE ID[0x10] in CPUKeys)
{

每一个循环都有我的答案。它发生的奇怪的事情是我在获取ID时出错。错误状态为:“for each”迭代器类型“BYTE[16]”与元素类型“BYTE[16]”不兼容。知道为什么会这样说吗?我做错了什么,我该怎么修复?

< p>据我所知,C++中没有任何一个循环。 使用两个for循环。像这样的

for (int i = 0; i < 9; ++i)
{
   for (int j = 0; j < 16; ++j)
   {
     BYTE value = CPUKeys[i][j];
   }
}
for(int i=0;i<9;++i)
{
对于(int j=0;j<16;++j)
{
字节值=CPUKeys[i][j];
}
}
如果可行,请尝试以下方法:

for(auto& rows: CPUKeys)// Iterating over rows
{
    for(auto& elem: rows)
    {
        // iterate every row's column
    }
}

<代码>对于每个(字节ID [0x10]在CPUKeys)< /COD>不是一个有效的C++构造,显示确切的语句和错误。我的编译器(VS 2005)显示了一个不同的错误:<代码>每个语句不能对“无符号char [9 ] [16 ] '/CODE >的变量进行操作,所以也许你想要的是不可能的……这是我所使用的整个函数,很抱歉给你带来了困惑。编辑:显然enter不会缩进到注释的下一行。另外,它也太长了,无法进行任何评论:(你是说
c++/cli
对吗?(它与
c++
完全不同)@user3765064只是一个猜测:也许
BYTE(&ID)[0x10]
有效?(我自己无法检查)在
C++11
OP使用Visual Studio 2010中有foreach循环的语法;每个
似乎都是特定于该编译器的语言扩展(int-KeyNum=1;KeyNum<10;KeyNum++){if(!memcmp(Cpu,CPUKeys[KeyNum],0x10)){//这是xbox控制台的黑屏。但它似乎和你说的一样。你有什么想法吗?AFAIK Visual Studio 2010不支持范围循环,但我已经很久没有使用它了。