teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2018/01/28 12:06

投稿

catsforepaw
catsforepaw

スコア5944

answer CHANGED
@@ -19,4 +19,25 @@
19
19
  std::vector<int> vect{4, 2, 3, 1, 5};
20
20
  std::sort(vect.begin(), vect.end(), [](auto left, auto right){return left > right;});
21
21
  ```
22
- 条件を関数呼び出しにインラインで書けるようになったので可読性も上がります。
22
+ 条件を関数呼び出しにインラインで書けるようになったので可読性も上がります。
23
+
24
+ ---
25
+ 他の使い道としては、条件によって処理の一部分だけ変えたいというときに使うとすっきり書けることがあります。
26
+ ```C++
27
+ int sumx(const std::vector<int> &vect, bool odd)
28
+ {
29
+ std::function<bool(int)> cond;
30
+ if(odd)
31
+ cond = [](int x){return x % 2 != 0;};
32
+ else
33
+ cond = [](int x){return x % 2 == 0;};
34
+
35
+ int sum = 0;
36
+ for(auto&& x : vect)
37
+ {
38
+ if(cond(x))
39
+ sum += x;
40
+ }
41
+ return sum;
42
+ }
43
+ ```

1

余分な文章を削除

2018/01/28 12:06

投稿

catsforepaw
catsforepaw

スコア5944

answer CHANGED
@@ -12,7 +12,7 @@
12
12
  }
13
13
  };
14
14
  std::sort(vect.begin(), vect.end(), Comp());
15
- ```※コード例なのでstd::greaterを使えという突っ込みは無しでお願いします。
15
+ ```
16
16
 
17
17
  ラムダ式を使うとこう書けます。
18
18
  ```C++