std :: set with unsistent operator<

时间:2015-07-21 08:43:33

标签: c++ set stdset

我正在编写一个C ++算法来解决棋盘游戏。 解决方案基于以下内容:

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

由于我不想多次检查同一块板,我使用std::set<Board>来跟踪被检查的板。

Boardbool operator<(const Board& rhs) const定义了std::set正常工作。

那么,如果我的比较函数无法确保董事会实例中的订单,我的std::set会发生什么?

例如:

a = Board()
b = Board()
c = Board()

a > b returns true
b > c returns true
a > c returns false

std::set是否有可能,因为它基于红黑树,不止一次插入同一个主板?

1 个答案:

答案 0 :(得分:1)

如果比较器不能正常工作,结构将无法正常工作。它可能会报告项目丢失。它可能无法插入某些内容。它可能会快速崩溃,或者它似乎适用于所有测试用例,然后崩溃在客户的计算机上。

所有赌注都已关闭。