C++ 使用Range-v3过滤group_输出的正确方法是什么?

C++ 使用Range-v3过滤group_输出的正确方法是什么?,c++,c++17,range-v3,C++,C++17,Range V3,以下代码无法编译,因为x无法与std::vector进行比较,因为x是由Range-v3处理的更复杂的结构(这很好,因为它是惰性的,不像std::vector) 我如何编写过滤lambda来处理这个问题,而不必强制将x转换为std::vector #包括 #包括 #包括 int main(){ std::向量v{1,2,3,4,5}; 自动w=v |范围::视图::分组依据([](自动常量&c1,自动常量&c2){return c1==3&&c2==4;}) |范围::视图::过滤器([](自动

以下代码无法编译,因为
x
无法与
std::vector
进行比较,因为
x
是由Range-v3处理的更复杂的结构(这很好,因为它是惰性的,不像
std::vector

我如何编写过滤lambda来处理这个问题,而不必强制将
x
转换为
std::vector

#包括
#包括
#包括
int main(){
std::向量v{1,2,3,4,5};
自动w=v
|范围::视图::分组依据([](自动常量&c1,自动常量&c2){return c1==3&&c2==4;})
|范围::视图::过滤器([](自动常量&x){return x!=std::vector{3,4};});
}

您仍然可以将视图转换为向量:

 | ranges::views::filter([](auto const& x){ return (x | ranges::to_vector) != std::vector<int>{3,4}; });

很抱歉回复太晚,但这正是我想要的!
ranges::view::filter([](auto const& x){ return !ranges::equal(x, std::vector<int>{3,4}); })