在c++中使用列表迭代器时遇到问题
having problems using iterators with lists in c++
我正在用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
}
}
}
相关文章:
- 使用std::multimap迭代器创建std::list
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++中带有List类的迭代器Segfault
- 如何在c++迭代器类型中包装std::chrono
- 集合上的输出迭代器:assign和increment迭代器
- Boost Spirit,获取迭代器内部语义动作
- 对于set上的循环-获取next元素迭代器
- 为什么output_editor Concept不需要output_e迭代器标记
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 使用迭代器时如何访问对象在向量中的位置?
- std::vector::迭代器是否可以合法地作为指针
- 跟随整数索引列表的自定义类迭代器
- 不明白迭代器,引用和指针失效,一个例子
- 我可以使用反向迭代器作为ForwardIt吗
- ESP8266单片机矢量迭代器的C++问题
- 使用迭代器时遇到问题,每 M 次传递一次擦除一个向量项
- 尝试设置迭代器时会遇到奇怪的错误
- 在c++中使用列表迭代器时遇到问题
- 删除元素时使用 STL 映射的迭代器时遇到问题
- 在定义模板类、操作符和迭代器时遇到麻烦