是不是因为这个?
从你发的最后一张截图来看,似乎所有的 EdgeRecord
都相等,这是几乎不可能的。因为 EdgeRecord::cost
是由两个端点的二次误差累加而来,几乎不可能存在两条边的 cost
相等。
比较两个 EdgeRecord
对象时会直接比较它们的 cost
大小。你没有给出自己实现 EdgeRecord
构造函数的思路,所以我猜测你可能没有实现(或没有正确地实现)这个构造函数,导致所有 EdgeRecord
对象的 cost
值都没有算(或者没有算对),这才会出现无法插入 set
的情况。