c – 如何使用range-v3将矢量转换为新矢量?
发布时间:2020-12-16 10:04:57 所属栏目:百科 来源:网络整理
导读:我来自C#世界,我可以写下这样的东西: var newList = oldList.Select(x = x * 2).Where(x = x 3).ToList(); 这允许我获取列表,以某种方式转换它,并将结果存储在新列表中. 我想在使用range-v3的C中做同样的事情.我理解转换是如何工作的,但range-v3是否提供类
我来自C#世界,我可以写下这样的东西:
var newList = oldList.Select(x => x * 2).Where(x => x > 3).ToList(); 这允许我获取列表,以某种方式转换它,并将结果存储在新列表中. 我想在使用range-v3的C中做同样的事情.我理解转换是如何工作的,但range-v3是否提供类似的“接收器”方法来计算和收集结果? 我正在寻找类似toVector的东西,它会将结果范围计算到新分配的std :: vector中. 解决方法
你可能会这样做:
std::vector<int> v2 = v | ranges::view::transform([](int x) { return x * 2; }) | ranges::view::filter([](int x) { return x > 3; }); Demo 或者,如果您更喜欢左侧的自动: auto v2 = v | ranges::view::transform([](int x) { return x * 2; }) | ranges::view::filter([](int x) { return x > 3; }) | ranges::to_vector; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |