【发布时间】:2017-11-27 05:07:05
【问题描述】:
我有一个 std::unordered_set,其中包含 bar 类的实例。
我想遍历集合中的所有 bars 并在每个上调用一些 void foo(bar& b) 函数。
您可能会从函数签名中注意到我希望foo 以某种方式更改bar& b 参数的状态。
现在,我知道foo 不会以影响散列或相等比较的方式更改bar,但我仍然有问题。
但是,我对集合进行了迭代,我希望得到的最好结果是 const bar&,这显然是行不通的。
我可以想到几种可能的方法:
- 使用
const_cast。不知道这是否可行(还)。这对我来说有点难闻,但我很高兴能开悟!! - 使用
std::unordered_map而不是std::unordered_set,这样即使我只能得到密钥的const,我也可以使用该密钥查找bar对象并安全地调用fooon它。
非常感谢您的建议!
提前致谢!
【问题讨论】:
标签: c++11 iterator constants unordered-map unordered-set