回答編集履歴

3

コードの変更

2020/05/19 11:50

投稿

退会済みユーザー
test CHANGED
@@ -20,13 +20,13 @@
20
20
 
21
21
 
22
22
 
23
- auto std_sort = [&](Iterator it_1, Iterator it_2, Compare com) {
23
+ auto std_sort = [](Iterator it_1, Iterator it_2, Compare com) {
24
24
 
25
25
  std::sort(it_1, it_2, com);
26
26
 
27
27
  };
28
28
 
29
- auto std_stable_sort = [&](Iterator it_1, Iterator it_2, Compare com) {
29
+ auto std_stable_sort = [](Iterator it_1, Iterator it_2, Compare com) {
30
30
 
31
31
  std::stable_sort(it_1, it_2, com);
32
32
 

2

コードの追加

2020/05/19 11:50

投稿

退会済みユーザー
test CHANGED
@@ -1 +1,65 @@
1
1
  ちょっと出先でコードが書けなくて申し訳ないですが、std::functionを要素にしたvectorを作成する、もしくはポリモーフィズムでループさせる(質問とずれますが)、で実現できそうかなと思います。
2
+
3
+
4
+
5
+ 【追記】
6
+
7
+ 遅くなりすみません。
8
+
9
+ ```cpp
10
+
11
+ using Iterator = std::vector<int>::iterator;
12
+
13
+ using Compare = std::function<bool(const int&, const int&)>;
14
+
15
+
16
+
17
+ int main() {
18
+
19
+ std::vector<int> unsorted_list{ 9, 8, 7, 6, 5 };
20
+
21
+
22
+
23
+ auto std_sort = [&](Iterator it_1, Iterator it_2, Compare com) {
24
+
25
+ std::sort(it_1, it_2, com);
26
+
27
+ };
28
+
29
+ auto std_stable_sort = [&](Iterator it_1, Iterator it_2, Compare com) {
30
+
31
+ std::stable_sort(it_1, it_2, com);
32
+
33
+ };
34
+
35
+
36
+
37
+ std::vector<std::function<void(Iterator, Iterator, Compare)>> vec{std_sort, std_stable_sort};
38
+
39
+
40
+
41
+ for (auto&& v : vec) {
42
+
43
+ int cnt = 0;
44
+
45
+ v(std::begin(unsorted_list),
46
+
47
+ std::end(unsorted_list),
48
+
49
+ [&](const int &lhs, const int &rhs) {
50
+
51
+ ++cnt;
52
+
53
+ return lhs < rhs;
54
+
55
+ });
56
+
57
+ std::cout << cnt << std::endl;
58
+
59
+ }
60
+
61
+ }
62
+
63
+ ```
64
+
65
+ こんな感じのを想像していました。これならエラーは出ないかな、と思います。

1

言葉足らずな部分の修正

2020/05/19 11:49

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- ちょっと出先でコードが書けなくて申し訳ないですが、std::functionもしくはポリモーフィズムでループさせる、で実現できそうかなと思います。
1
+ ちょっと出先でコードが書けなくて申し訳ないですが、std::functionを要素にしたvectorを作成する、もしくはポリモーフィズムでループさせる(質問とずれますが)、で実現できそうかなと思います。