0

少し前に、次のコード行に出くわしました。

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

ブーストヘッダーを使用していましたが、非常に非常にエレガントだといつも思っていました(ラムダには名前付きの入力パラメーターがないため、非常に短いことに注意してください:) C++ 11にはラムダ関数があることを知っていることに注意してください。これはラムダについてではなく、この素晴らしい短い構文についてです。

4

2 に答える 2

6

ハードコーディングされた型で...

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

汎用ラムダが許可されている場合(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 コンポーネントの構文を使用できるでしょうか?

言語ソリューションはラムダです。ラムダが気に入らない場合は、Boost を使用するか、ラムダのこの特定の部分を盗む必要があります。

于 2013-04-24T08:43:47.517 に答える