首页 > 解决方案 > 封装 std::map 以允许迭代,但不能直接访问密钥?

问题描述

有没有办法封装std::map在用户定义的类中,允许迭代,但不允许直接访问密钥?

我想在插入时操作密钥,并且我想通过用户定义的方法强制所有对元素的访问(因为需要修改密钥)。

我认为问题在于允许迭代地图,同时阻止用户通过迭代器访问密钥。

标签: c++dictionarystlencapsulation

解决方案


不要暴露迭代器。公开一个for_each将每个元素传递给用户提供的 (lambda) 函数的函数。

或者,使用转换迭代器


推荐阅读