【问题标题】:having problems using iterators with lists in c++在 C++ 中使用带有列表的迭代器时遇到问题
【发布时间】:2012-07-27 02:37:31
【问题描述】:

我正在编写一个算法来检查 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 访问列表中的数组元素。任何人都可以帮助我提供示例和/或建议吗?

【问题讨论】:

  • 我不认为您可以将数组存储在std::list 中,因为数组类型不是可复制构造或可分配的,这是在 STL 容器中存储类型所必需的两个要求。不过,也许他们在 C++11 中放松了这一点。

标签: c++ list multidimensional-array iterator


【解决方案1】:

使用(*it)[i][j] 代替it-&gt;[i][j]-&gt; 符号仅在您访问成员时使用,但您的列表包含数组,而不是类或结构。

【讨论】:

    【解决方案2】:

    如果您从迭代器创建对对象的引用,可能会更容易理解。之后,您就可以像往常一样访问它了。

    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
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多