【发布时间】:2020-11-21 07:22:22
【问题描述】:
以下代码无法编译,因为x 无法与std::vector<int> 进行比较,因为x 是由 Range-v3 处理的更复杂的结构(这很好,因为它很懒,不像std::vector<int>) .
我如何编写过滤 lambda 来应对这种情况,可能不会强制将 x 不必要地转换为 std::vector<int>?
#include <range/v3/view/filter.hpp>
#include <range/v3/view/group_by.hpp>
#include <vector>
int main() {
std::vector<int> v{1,2,3,4,5};
auto w = v
| ranges::views::group_by([](auto const& c1, auto const& c2){ return c1 == 3 && c2 == 4; })
| ranges::views::filter([](auto const& x){ return x != std::vector<int>{3,4}; });
}
【问题讨论】: