【问题标题】:Using an external function inside a lambda expression在 lambda 表达式中使用外部函数
【发布时间】:2014-01-30 08:14:54
【问题描述】:

是否可以在 lambda 表达式中调用外部函数,如果不能,是否有其他方法可以使用转换和外部函数来执行此操作?

int half(int x) { return x / 2; }

int main() {
std::vector<int> test(5);
std::transform(test.begin(), test.end(), test.begin(), []() { return half(4); });
return 0; 
}

【问题讨论】:

    标签: c++ transform std


    【解决方案1】:

    是的,it is definitely possible。事实上,您的代码的唯一问题是您的 lambda 应该接受 int。通过该修复,您的代码 compiles just fine:

    int half(int x) { return x / 2; }
    
    int main() {
        std::vector<int> test(5);
        std::transform(test.begin(), test.end(), test.begin(), [](int) { return half(4); });
        //                                                        ^^^
        return 0; 
    }
    

    【讨论】:

      【解决方案2】:

      正如 Jeffrey 所说,这是可能的,也是常见的。但是,std::transform 将一元运算或二元运算作为其最终参数。你可能想要更多类似的东西:

      static int half(int x) { return x / 2; }
      
      int main() {
          std::vector<int> test(5);
          std::transform(test.begin(), test.end(), test.begin(), [](int value) {
              return half(value); 
          });
          return 0; 
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-27
        相关资源
        最近更新 更多