如何确定`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表+单调队列)