0

不久前,我偶然发现了以下代码行:

 return accumulate(s, s + size, char(), (_1 ^ _2));

它使用了 boost 标头,但我一直认为它非常非常优雅(注意 lambda 没有命名输入参数,所以它非常短。:) 请注意,我知道 C++11 有 lambda 函数,这是不是关于 lambdas,而是关于这个漂亮的简短语法。

4

2 回答 2

6

使用硬编码类型...

return accumulate(s, s+size, char(), [](char l, char r){ return l ^ r; });

当允许泛型 lambda时 (C++14)...

return accumulate(s, s+size, char(), [](auto l, auto r){ return l ^ r; });

目前,std::bit_xor ...

return accumulate(s, s+size, char(), bit_xor<char>());
于 2013-04-22T03:12:21.640 回答
3

没有 Boost 的唯一方法是重新发明创建它的 Boost 组件。如果没有 Boost 组件的实现,你怎么可能拥有 Boost 组件的语法?

语言解决方案是 lambda,如果您不喜欢它们,那么是时候使用 Boost 或窃取其中的特定部分了。

于 2013-04-24T08:43:47.517 回答