std::boost::weak_ptr 集- 将 const_iterator 转换为 const T?
我有一个包含 boost::weak_ptr
的 std::set
的类。我有两个函数 begin() 和 end(),它们将迭代器返回到容器。但是,我不希望客户端能够修改 T
。简单地返回 const_iterator 是行不通的,因为 boost::weak_ptr 指向的 T 是可编辑的。
我想要做的是将 const_iterator
返回到 std::set
。从 std::set
不起作用。有什么办法可以得到我想要的行为吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以编写一个转换迭代器来将
weak_ptr
转换为weak_ptr
。由于您已经在使用 Boost,因此可以使用boost::transform_iterator
:如果您不想使用
boost::transform_iterator
,那么编写一个简单的任务你自己的。我在 an 中展示了如何执行此操作回答另一个问题。You can write a transform iterator to convert the
weak_ptr<T>
to aweak_ptr<const T>
. Since you're already using Boost, you can useboost::transform_iterator
:If you don't want to use
boost::transform_iterator
, it is a straightforward task to write your own. I showed how to do this in an answer to another question.