4

我了解如何使用创建自己的 range-v3视图view-facade,但现在我想创建自己的容器,以便可以使用就地变异actions

MyContainer<ItemType> list = createList();
list |= ranges::actions::transform(&someMappingFunction);

不幸的是,似乎没有像 a 这样的简单助手,container-facade而且我的 C++ 技能还不足以通过阅读来理解 range-v3 源代码。我的容器需要实现哪个接口,或者它需要从什么派生?

感谢您的任何提示!

4

1 回答 1

1

begin从 range-v3 的角度来看,如果在可变实例上返回的类型与在 const 实例上不同的类型,或者如果is_view<T>::value是,则Range 是一个容器false。这些操作通常需要额外的功能。例如,许多需要cont.insert(pos, val)将值val插入容器cont的位置pos。有些需要cont.erase(from, to)删除由范围 [ from, to) 表示的元素。对缺乏文档表示歉意。HTH。

于 2016-02-22T16:42:00.933 回答