代码之家  ›  专栏  ›  技术社区  ›  Enlico

Range-v3中是否有方法在范围/视图前添加或追加元素?

  •  0
  • Enlico  · 技术社区  · 4 年前

    Range-v3具有 ranges::views::drop ranges::views::drop_last 从视图的正面或背面删除元素。

    它是否提供类似的功能,在视图中添加/追加元素?

    目前,我找到的最短方法是 concat 带有a的范围/容器 iota 或与a single :

    #include <assert.h>
    #include <range/v3/view/iota.hpp>
    #include <range/v3/view/concat.hpp>
    #include <range/v3/to_container.hpp>
    
    using namespace ranges;
    using namespace views;
    int main() {
        std::vector<int> v{1,2,3};
    
        auto wi = concat(iota(0,1),v);
        assert(((wi | to_vector) == std::vector<int>{0,1,2,3}));
    
        auto ws = ranges::views::concat(single(0), v);
        assert(((ws | to_vector) == std::vector<int>{0,1,2,3}));
    }
    
    0 回复  |  直到 3 年前