我实现了一个模板类的哈希表,其中包含类型为K的键和C ++ 11中类型为V的值。该表的所有内容都存储在std::list <std::pair <K,V> >
中。现在我想以这样的方式为此表实现iterator
和const_iterator
,客户端可以通过iterator
修改仅对的第二个元素并且无法& #39; t通过const_iterator
修改对中的任何元素。
我的第一个想法就是使用std::list <std::pair <const K,V> >
作为存储空间,并提供此列表的相应迭代器。问题是,当我声明此类std::list
,begin()
和end()
始终返回const_iterator
时,以及当我尝试使用{{iterator
将其转换为erase
时3}}方法,它不起作用,因为libstdc ++中的iterator
只接收const_iterator
作为参数(它是libstdc ++的一个bug)。所以我无法将iterator
投射到{{1}}。
如何实现这样的迭代器?