相关疑难解决方法(0)

是否可以将一对<Key,Value>转换为一对<const Key,Value>?

所以我有一个模拟地图const_iterator的智能迭代器,它需要在内部构建返回类型.显然,我想pair<Key, Value>在我的迭代器类中存储一个(因为我需要修改它),但同时我希望dereference函数呈现一个pair<const Key, Value>(实际上它将分别是一个const pair<const Key, Value>&const pair<const Key, Value>*).到目前为止,我提出的唯一解决方案是每次更改迭代器类指向更改的值时动态分配一个新对.毋庸置疑,这不是一个好的解决方案.

我也尝试过*const_cast<const pair<const Key, Value> >(&value)在哪里value声明pair<Key, Value>.

任何帮助将不胜感激(因为它不能做到的知识).

编辑

对于好奇:我最终pair<const Key, Value> p在我的迭代器类中存储了一个.为了更改对,我根据底层迭代器(map<Key, Value>::const_iterator it)分别更改了两个元素,const_cast使键可以被更改,如下所示:

*const_cast<Key*>(&p.first) = it->first;
p.second = it->second;
Run Code Online (Sandbox Code Playgroud)

不是我非常满意的解决方案,但它完成了工作,并且取消引用方法很高兴,因为我存储的是正确类型的东西,他们可以参考.

c++ stl const const-cast std-pair

5
推荐指数
2
解决办法
1783
查看次数

标签 统计

c++ ×1

const ×1

const-cast ×1

std-pair ×1

stl ×1