提问人:dw218192 提问时间:10/14/2023 最后编辑:dw218192 更新时间:10/14/2023 访问量:122
是否可以使用 mutable 将 std::map 中的所有键减少相同的值?
Is it ok to use mutable to decrease all the keys in std::map by the same value?
问:
据我所知,std::map 几乎总是作为某种自平衡搜索树实现的。因此,我认为将每个键减去相同的值不应该导致未定义的行为或损坏映射?以下代码真的安全吗?
#include <map>
#include <iostream>
using namespace std;
struct Key {
mutable int val;
bool operator<(Key const& other) const {
return val < other.val;
}
};
int main() {
map<Key,int> mp {
{{1},2},{{3},4},{{5},6},{{7},9}
};
for (auto&& kvp : mp) {
kvp.first.val -= 2;
}
mp.emplace(Key{2},3);
for (auto&& kvp : mp) {
cout << kvp.first.val << ":" << kvp.second << " ";
}
cout << endl;
// should print -1:2 1:4 2:3 3:6 5:9
}
至于用例,我认为这对于实现一个事件队列可能很有用,其中每个事件都与一个计时器相关联,如果计时器达到 0,就会被触发。
答: 暂无答案
评论
std::map
const