如何确定 `ranges::view` 对象和 `std::vector` 之间的等价性?

How to determine equivalence between `ranges::view` object and `std::vector`?

我正在使用出色的 range-v3 库。我的函数之一 returns 一个 ranges::view 对象,我想将其与 std::vector 进行比较。当然,我可以逐个元素进行比较,但必须有更好的方法。

How to determine equivalence between ranges::view object and std::vector?

如果您想知道两个范围是否引用相等元素的序列,请将它们传递给 ranges::equal 算法 (DEMO):

int main() {
  std::vector<int> vec{5,4,3,2,1,0};
  assert(ranges::equal(vec, ranges::view::iota(0, 6) | ranges::view::reverse));
}