回答編集履歴
4
完全コードで型の違いがわかりにくいので、値をそれぞれ区別できるように修正
test
CHANGED
@@ -98,8 +98,6 @@
|
|
98
98
|
|
99
99
|
#include <type_traits>
|
100
100
|
|
101
|
-
#include <boost/type_index.hpp>
|
102
|
-
|
103
101
|
|
104
102
|
|
105
103
|
template <class Tuple, class Elem, std::size_t ...Indices>
|
@@ -132,31 +130,49 @@
|
|
132
130
|
|
133
131
|
#include <iostream>
|
134
132
|
|
133
|
+
#include <string>
|
134
|
+
|
135
|
+
|
136
|
+
|
135
137
|
int main() {
|
136
138
|
|
137
|
-
std::vector<std::tuple<int, double, std::string>> source{
|
139
|
+
std::vector<std::tuple<int, double, std::string>> source{
|
138
140
|
|
139
|
-
|
141
|
+
{1, 1.1, "one"},
|
140
142
|
|
141
|
-
|
143
|
+
{2, 2.2, "two"}
|
142
144
|
|
145
|
+
};
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
auto [int_vec, double_vec, string_vec] = vt_to_tv(source);
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
for (auto&& elem : int_vec)
|
154
|
+
|
143
|
-
|
155
|
+
{ std::cout << elem << " "; }
|
144
156
|
|
145
157
|
std::cout << "\n";
|
146
158
|
|
159
|
+
for (auto&& elem : double_vec)
|
160
|
+
|
147
|
-
|
161
|
+
{ std::cout << elem << " "; }
|
148
162
|
|
149
163
|
std::cout << "\n";
|
150
164
|
|
165
|
+
for (auto&& elem : string_vec)
|
166
|
+
|
151
|
-
|
167
|
+
{ std::cout << elem << " "; }
|
152
168
|
|
153
169
|
std::cout << "\n";
|
154
170
|
|
155
171
|
// 1 2
|
156
172
|
|
157
|
-
// 1 2
|
173
|
+
// 1.1 2.2
|
158
174
|
|
159
|
-
//
|
175
|
+
// one two
|
160
176
|
|
161
177
|
}
|
162
178
|
|
@@ -164,4 +180,4 @@
|
|
164
180
|
|
165
181
|
|
166
182
|
|
167
|
-
[Wandboxで実行する](https://wandbox.org/permlink/
|
183
|
+
[Wandboxで実行する](https://wandbox.org/permlink/XeJyQJWM5HTPaVAW)
|
3
コピペのopが残っていたので `,` に
test
CHANGED
@@ -68,7 +68,7 @@
|
|
68
68
|
|
69
69
|
```
|
70
70
|
|
71
|
-
((push_0 , push_1) , ...)
|
71
|
+
((push_0 , push_1) , ...) , push_N-1
|
72
72
|
|
73
73
|
```
|
74
74
|
|
2
fold expressionの説明で結合方向を解説していないので修正
test
CHANGED
@@ -62,23 +62,25 @@
|
|
62
62
|
|
63
63
|
|
64
64
|
|
65
|
-
すると、次のようにカンマ区切りの式を得ることができます。
|
65
|
+
すると、次のように(この場合は左結合の)カンマ区切りの式を得ることができます。
|
66
66
|
|
67
67
|
|
68
68
|
|
69
|
-
```
|
69
|
+
```
|
70
70
|
|
71
|
-
|
71
|
+
((push_0 , push_1) , ...) op push_N-1
|
72
|
-
|
73
|
-
get<1>(tup).push_back(get<1>(elem)).
|
74
|
-
|
75
|
-
get<2>(tup).push_back(get<2>(elem)),
|
76
|
-
|
77
|
-
...,
|
78
|
-
|
79
|
-
get<N-1>(tup).push_back(get<N-1>(elem))
|
80
72
|
|
81
73
|
```
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
ここで `push_N` は
|
78
|
+
|
79
|
+
`std::get<N>(tup).emplace_back(std::get<N>(elem))`
|
80
|
+
|
81
|
+
のことです
|
82
|
+
|
83
|
+
|
82
84
|
|
83
85
|
|
84
86
|
|
1
`get<N-1>(res).push_back(get<2>(v[i]));` => `get<N-1>(res).push_back(get<N-1>(v[i]));`
test
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
...
|
22
22
|
|
23
|
-
get<N-1>(res).push_back(get<
|
23
|
+
get<N-1>(res).push_back(get<N-1>(v[i]));
|
24
24
|
|
25
25
|
```
|
26
26
|
|
@@ -76,7 +76,7 @@
|
|
76
76
|
|
77
77
|
...,
|
78
78
|
|
79
|
-
get<N-1>(tup).push_back(get<
|
79
|
+
get<N-1>(tup).push_back(get<N-1>(elem))
|
80
80
|
|
81
81
|
```
|
82
82
|
|