gpt4 book ai didi

c++ - 使用 const 键但非 const 值进行映射?

转载 作者:太空宇宙 更新时间:2023-11-04 12:53:48 25 4
gpt4 key购买 nike

我有一种情况,我想要一个不允许在初始化后添加/删除键的映射,但允许更改值(因此我不能简单地使映射 const).即

/*semi-const*/ map<int,int> myMap = initMap();

myMap[1] = 2; // NOT OK, because potentially adds a new key
myMap.at(1) = 2; // OK, because works only if key is present
for (auto & element : myMap) {
element.second = 0; // OK, values may change
}

我可以为 std::map 编写我自己的包装器,但我觉得这并不少见,所以我想知道是否已经存在解决方案。

对于不允许添加/删除键,而值可能会更改的 map ,是否有一些标准习惯用法?

ps:我知道单单标题有点含糊,因为键在 map 中已经是常量了,但我希望我的意思很清楚......

最佳答案

您能否创建一个包装器,其中包含允许在 const 时更改该值的值,并将其放入 map 中?像这样的东西:

template<typename T>
class Mutable {
mutable T value;
public:
const Mutable& operator=(const T& v) const { value = v; return *this; }
T& get() const { return value; }
};

那么你的 map 可以是类型

const std::map<int, Mutable<int>>

Live demo .

关于c++ - 使用 const 键但非 const 值进行映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47679383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com