Readonly std :: map?

时间:2013-07-06 09:22:22

标签: c++ boost map

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

e.g。

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;

};

2 个答案:

答案 0 :(得分:4)

您可以使用常量参考。

答案 1 :(得分:2)

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