【发布时间】:2019-01-22 12:49:28
【问题描述】:
有没有办法将std::map 封装在用户定义的类中,允许迭代,但不允许直接访问密钥?
我想在插入时操作密钥,并且我想通过用户定义的方法强制所有对元素的访问(因为密钥需要修改)。
我认为问题在于允许在地图上进行迭代,同时阻止用户通过迭代器访问密钥。
【问题讨论】:
-
包装迭代器?
-
您可以创建自己的迭代器来覆盖实际的地图迭代器,但只取消对值的引用。 Boost 为此提供了转换迭代器,但编写自己的迭代器很简单。
-
如果您在插入时操作键,如果键(在迭代时)不是他们期望的值,地图的用户如何知道他们获得了特定元素?
-
暴露转换后的键有什么问题?
标签: c++ dictionary stl encapsulation