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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何确定`range :: view`对象和`std :: vector`之间的等价?相关的知识,希望对你有一定的参考价值。

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

如何确定ranges::view对象和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));
}

以上是关于如何确定`range :: view`对象和`std :: vector`之间的等价?的主要内容,如果未能解决你的问题,请参考以下文章

为什么将`const char [N]`和`const char *`传递给view :: c_str()会产生不同的二进制文件,而string_view会产生相同的结果吗?

RMQ(Range MinimumQuery)问题之ST算法

牛客多校2021 K.King of Range(ST表+单调队列)

C++Ranges&views(高阶函数)的学习笔记

如何更改 Ionic 4 的 ion-range pin 字体和格式?

在容器上迭代地应用 range-v3 views::filter