加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读