初始化后std :: map更改key_comp

djW*_*ann 6 c++ stl stdmap

在创建和初始化std :: map之后,可以更改它的比较方法吗?或者也许只有在它被创建之后?

我想以某种方式改变包含我无法更改定义的地图的类的行为.我想通过传递另一张地图来改变它的比较行为.

Nim*_*Nim 4

也许有可能,这是未经测试的:

  1. 定义您自己的自定义比较器,其内部有一个指向比较函数的实际实现的指针
  2. 将其实例传递给地图的构造函数(您也必须使用此比较器键入地图。)
  3. 稍后设置真正的实现(在使用地图之前),如果之后设置,你不知道对内部的影响......

已经测试过,并且可以执行上述操作,但是如果树中存在项目,则更改比较函数可能是灾难性的......

不管怎样——这一切听起来太可疑了……