I'm writing a C++ algorithm to solve a board game. The solution is based on the following:
enqueue initial board
while queue not empty:
dequeue a board
if board is solved:
print solution
else:
for each possible board that can arise out of this one:
add board to end of queue
Since I don't want to examine the same board more than one time I use std::set<Board>
to keep track of examined boards.
In Board
class bool operator<(const Board& rhs) const
is defined to make std::set
work properly.
So what happens in my std::set
if my comparison function doesn't ensure an order in board instances?
As example:
a = Board()
b = Board()
c = Board()
a > b returns true
b > c returns true
a > c returns false
Is it possible that std::set
, since it's based on Red-Black Tree, inserts the same Board more than once?