对一组指针使用std::less



我有一个类,在其中我声明了一个这样的集合:

std::set<UPFIR::RetentionSignal*> _retSignalSet; 

我试着在上面使用std::less比较函数。我试过这样的东西:

std::set<UPFIR::RetentionSignal*, std::less<UPFIR::RetentionSignal*>> _retSignalSet; 

我得到的反馈是";添加std::less不会使其成为决定论。您必须比较名称";,有人能解释一下我以前没有用过std::less吗?

感谢

如果要求集合按名称排序,那么std::less没有帮助。您必须提供一个用于比较名称的自定义比较器。例如(只是一个未经测试的草图(:

struct LessByName {
bool operator<(UPFIR::RetentionSignal* a, UPFIR::RetentionSignal* b)
{
return a->name < b->name;
}
};

然后像一样使用

std::set<UPFIR::RetentionSignal*, LessByName> _retSignalSet;

BTW,评论";CCD_ 2不会使其具有确定性;是错误的,因为std::less被定义为提供指针的总顺序。你得到的订单可能不是完成任务所需的订单。

相关内容

  • 没有找到相关文章

最新更新