【问题标题】:How to use range-v3's ranges::actions::transform?如何使用 range-v3 的 range::actions::transform?
【发布时间】:2020-07-26 01:36:35
【问题描述】:

我想使用ranges-v3 就地转换数组。我可以用 ranges::transform成功,但未能使用actions::transform

int arr[]{1, 2, 3};
auto fn = [](auto e) { return e + 1; };
ranges::transform(arr, std::begin(arr), fn); // ok
arr |= actions::transform(std::begin(arr), fn); // error

错误信息:

fatal error: no matching function for call to object of type 'const ranges::actions::transform_fn'
        arg |= actions::transform(std::begin(arr), std::begin(arr),
               ^~~~~~~~~~~~~~~~~~

这种情况下如何使用actions::transform

【问题讨论】:

  • 抱歉,我使用的是range-v3,而不是std::ranges
  • 您的错误信息似乎与代码行不符。
  • @cigien 错误出现在最后一行代码。
  • 是的,但错误消息文本似乎与该行不匹配。

标签: c++ functional-programming range-v3


【解决方案1】:

range-v3 中,您只需这样做

arr |= ranges::actions::transform(fn);

这是demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2019-12-16
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2019-08-13
    相关资源
    最近更新 更多