所以我有一个智能迭代器来模拟映射 const_iterator,它需要在内部构建返回类型。显然,我想将 a 存储pair<Key, Value>
在我的迭代器类中(因为我需要修改它),但同时我希望取消引用函数呈现 a pair<const Key, Value>
(实际上它分别是 aconst pair<const Key, Value>&
和const pair<const Key, Value>*
)。到目前为止,我提出的唯一解决方案是每次更改我的迭代器类指向的值更改时动态分配一个新对。不用说,这不是一个好的解决方案。
我也试过*const_cast<const pair<const Key, Value> >(&value)
wherevalue
被声明为pair<Key, Value>
.
任何帮助将不胜感激(正如无法做到的知识一样)。
编辑
对于好奇:我最终将 a 存储pair<const Key, Value> p
在我的迭代器类中。为了更改对,我根据底层迭代器 ( map<Key, Value>::const_iterator it
)分别更改两个元素,const_cast
设置键以便可以更改它,如下所示:
*const_cast<Key*>(&p.first) = it->first;
p.second = it->second;
这不是我非常满意的解决方案,但它完成了工作,并且取消引用方法很高兴,因为我存储了正确类型的东西,它们可以引用。