2

我想从我的班级返回一个类似的只读适配器boost::iterator_range,但是对于 astd::map和支持operator[](即不是boost::iterator_range<std::pair<key_type, value_type>>)是否存在类似的东西?

例如

class processor
{
public:

   // boost::map_view is made up.
   // The data member could be std::map boost::multimap etc...

    virtual boost::map_view<std::string, boost::signals2::signal<int>> outputs() = 0;

};
4

2 回答 2

5

您可以使用常量引用。

于 2013-07-06T09:27:36.713 回答
2

您可以创建一个简单的类来包装 boost::iterator_range 并将您的地图作为成员进行 const 引用。您的 operator[] 实现应该通过在第一个和最后一个范围元素上调用 map 比较对象来检查传递的键是否在范围内(注意,它对于 multi_map 来说是不够的)以及它是否只是调用底层 map[]。

于 2013-07-06T10:03:35.520 回答