Meh*_*dad 2 c++ memory-management map
我需要修改一个元素的键std::map.
目前,我这样做是通过擦除元素并用不同的密钥重新插入它.
不幸的是,这很慢 - 它涉及额外的堆释放和重新分配.
什么是最好的方法 - 如果有任何方法 - 当我需要修改元素的键时,避免自动节点重新分配和销毁?
我认为没有办法避免节点被解除分配和重新分配.
我能想到的最好的方法是指定一个带有旁视列表的分配器,这样当一个节点在被释放后很快重新分配时,你可以非常快速/轻松地提供同一个节点.
如果您确定密钥更改不会影响密钥的相对顺序,则可以在适当的位置修改密钥(例如,通过将其指定为可变成员),但这样做会导致未定义的行为 - 很可能是非常好,你可以逃脱它,但它仍然是官方未定义的行为.
| 归档时间: |
|
| 查看次数: |
547 次 |
| 最近记录: |