我有自定义类的地图,在某些情况下我会在地图中编辑某个键的值,而不会将其从地图中删除。进行这些更改后,我想重新对映射进行排序,以便循环键的顺序可以更正键值的这一变化。但是,我想这样做而不删除元素并重新插入(因为我注意到插入每次都重新排序),因为这是在循环中完成的,它会弄乱迭代顺序。在循环完成后,有没有办法简单地重新排序整个地图?我将使用地图的默认比较器重新排序。
编辑*这是std :: map
答案 0 :(得分:0)
如果您想要修改地图中的键而不必删除或插入地图中的元素,我会重新考虑您的方法。你正在尝试做一些std :: map(或任何关联容器)没有构建的东西。我假设你担心表现。在map中插入和删除就像find()一样是O(log n)操作。在循环中执行此类工作在性能方面不是一个大问题,但如果您正在处理必须尽可能快地运行的关键代码,那么我可以看到您可能更关注的位置速度在这里。