我在没有找到任何解决方案的代码中遇到问题。
void Buffer::printAllBoards()
{
std::cout << "Total " << boards_.size() << " boards." << std::endl;
std::map<PlayBoard, InvVertex*>::iterator itr;
for (itr = boards_.begin(); itr != boards_.end(); ++itr)
{
std::cout << "the distance is " << distance(boards_.begin(), boards_.end()) << std::endl;
//PlayBoard board = itr->first;
//board.printBoard();
}
}
board_ 是 Buffer 的成员变量,它的类型为 std::map< PlayBoard, InvVertex* >。
这部分代码的程序输出为:
Total 9 boards.
the distance is 2
the distance is 2
第一行很明显,因为我在地图中添加了 9 个元素。但是使用迭代器我只能访问其中两个,因为 begin 或 end 函数没有正确的值。
有没有人有解决方案?
感谢您的回答。
我在 tar.gz 中提供了代码作为下载: http ://www.file-upload.net/download-7931142/invers.tar.gz.html