我有一个std::multimap
where 值的类型std::function
。由于没有比较std::function
- 看到这个- 似乎没有办法从这个多图中删除特定元素。例如,如果您想从例如 astd::list
或中按值删除元素,我想也是如此std::vector
。
我的用例是一个函数,它接受一个回调参数(std::function
)。发生特定事件时应调用回调。但是,在其他情况下,被调用者希望在回调触发之前“取消注册”回调。
不过,最初我只是将其包装std::function
在一个结构中并在我的地图中插入指向该结构的指针。然而,这并不可行,因为接口用户不应该将回调包装在结构中并存储指针值。
我目前最好的想法是在注册回调时返回一个 id - 如果被调用者希望稍后可以选择取消回调,则必须存储该 id。
对我的泡菜有什么想法吗?