在c++中使用列表迭代器时遇到问题

having problems using iterators with lists in c++

本文关键字:迭代器 遇到 问题 列表 c++      更新时间:2023-10-16

我正在用c++编写一个算法,用于检查检查器中的重复移动,但我在使用iterator时遇到了问题。

这是我的代码:

static std::list<char[8][8]> duplicates;   
    char checkForDuplicates[8][8];
    for(char i = 0;i < 8;i++)
        for(char j = 0;j < 8;j++)
            checkForDuplicates[i][j] = board[i][j];
    bool isDuplicate = false;
    for(std::list<char[8][8]>::iterator it = duplicates.begin(); it != duplicates.end(); it++)
    {
        for(char i = 0;i < 8;i++)
        {
            for(char j = 0;j < 8;j++)
            {
                if(checkForDuplicates[i][j] != it->[i][j])
                    //do something
            }
        }
    }   

我特别需要这条线的帮助:

if(checkForDuplicates[i][j] != it->[i][j])

我正在尝试将列表中的一个数组元素与另一个数组单元进行比较,但我不知道如何使用list iterator访问列表中的数组单元。有人能帮我举些例子和/或建议吗?

使用(*it)[i][j]而不是it->[i][j]->表示法仅在访问成员时使用,但您的列表包含数组,而不是类或结构。

如果从迭代器创建对对象的引用,可能会更容易理解。之后,您可以按照正常方式访问它。

static std::list<char[8][8]> duplicates;   
    char checkForDuplicates[8][8];
    for(char i = 0;i < 8;i++)
        for(char j = 0;j < 8;j++)
            checkForDuplicates[i][j] = board[i][j];
    bool isDuplicate = false;
    for(std::list<char[8][8]>::iterator it = duplicates.begin(); it != duplicates.end(); it++)
    {
        char (&thisBoard)[8][8] = *it;  # <--
        for(char i = 0;i < 8;i++)
        {
            for(char j = 0;j < 8;j++)
            {
                if(checkForDuplicates[i][j] != thisBoard[i][j])
                    //do something
            }
        }
    }