0

在 c++ range-v3 库中。

是否可以访问游标(来自 view_facade)的内部数据?

class range_t : public ranges::view_facade<range_t>
{
    friend ranges::range_access;

    struct cursor {
        cursor() = default;
        cursor(FlatMultiMap& self, std::size_t index)
            : self(&self)
            , index(index)
        {}

        // other implementation stuff
    private:
        // I want to get this data from outside cursor class
        FlatMultiMap* self;
        std::size_t   index;
    };

    cursor begin_cursor() const
    {
        return { *self, index };
    }
    cursor end_cursor() const
    {
        return { *self, end_index };
    }

    FlatMultiMap* self;
    std::size_t   index;
    std::size_t   end_index;

public:
    range_t() = default;
    range_t(FlatMultiMap& self, std::size_t index, std::size_t end_index)
        : self(&self)
        , index(index)
        , end_index(end_index)
    {}

    template<class I, class S>
    range_t(I iterator, S sentinel)
    {
         // how to do this?
         iterator.self  // Error
    }

};

如果没有 - range-v3 是否提供类似https://www.boost.org/doc/libs/1_68_0/libs/iterator/doc/iterator_facade.html的内容?

4

1 回答 1

0

要访问/公开游标内部数据,需要使用游标的 mixin。

现在在“创建自定义迭代器”部分记录了https://ericniebler.github.io/range-v3/ 。

于 2018-12-17T20:48:29.013 回答