首页 > 解决方案 > 如何从两个迭代器创建范围

问题描述

我是使用 c++20 范围的新手。我的一个问题是,如果你有两个迭代器到一个向量中,你如何从它们创建一个范围视图?Range 将从第一个迭代器开始,在第二个迭代器之前结束 1。

标签: c++c++20

解决方案


std::ranges::subrange允许将迭代器和哨兵组合到一个视图中。

例如:

#include <iostream>
#include <vector>
#include <ranges>

int main()
{
    std::vector v = {1, 2, 3, 4, 5};

    std::ranges::subrange w(v.begin(), v.begin() + 2);
    
    for (auto i : w)
      std::cout << i << std::endl;
}

推荐阅读