我想从我的班级返回一个只有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;
};
答案 0 :(得分:4)
您可以使用常量参考。
答案 1 :(得分:2)
你可以创建一个包含boost :: iterator_range的简单类,并将const引用作为成员。你的operator []实现应该通过在第一个和最后一个范围元素上调用map比较对象来检查传递键是否在范围内(注意,它对于multi_map来说是不够的),如果它只是调用底层map []。