Readonly std::map?

Readonly std::map?

本文关键字:map Readonly std      更新时间:2023-10-16

我想从类中返回一个类似boost::iterator_range的只读适配器,但对于std::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;
};

您可以使用常量引用。

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