我刚开始使用c++20的ranges。我有一个问题,如果你有一个指向vector中的两个迭代器,该如何从它们创建一个ranges view呢?这个range应该从第一个迭代器开始,在第二个迭代器之前结束。
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;
}
vector
或其他连续容器中,您也可以使用std::span
。它有一些方便的函数用于获取子范围。只有在您的代码必须是通用的,或者您的迭代器可能更复杂(例如反转,或来自过滤/转换视图等)时,才需要使用ranges::subrange
。 - underscore_d