如何从两个迭代器创建范围?

5

我刚开始使用c++20的ranges。我有一个问题,如果你有一个指向vector中的两个迭代器,该如何从它们创建一个ranges view呢?这个range应该从第一个迭代器开始,在第二个迭代器之前结束。


1
如何将一对迭代器转换为视图 - NathanOliver
谢谢,在你提供的链接中找到了它。 - steviekm3
从一个vector或其他连续容器中,您也可以使用std::span。它有一些方便的函数用于获取子范围。只有在您的代码必须是通用的,或者您的迭代器可能更复杂(例如反转,或来自过滤/转换视图等)时,才需要使用ranges::subrange - underscore_d
1个回答

8

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;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接