回答編集履歴
11
vectorのpush_backにまつわる部分修正
test
CHANGED
@@ -14,11 +14,15 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
|
17
|
+
vectorのreserveメソッドを使わずpush_backで
|
18
18
|
|
19
|
-
|
19
|
+
何度もメモリの確保を行うと遅くなってしまうので
|
20
20
|
|
21
|
+
サイズがあらかじめ決まっているのなら
|
22
|
+
|
23
|
+
最初にreserveでメモリを全て確保してから
|
24
|
+
|
21
|
-
|
25
|
+
push_backで要素を追加していく方が好ましいかと思われます。
|
22
26
|
|
23
27
|
|
24
28
|
|
10
打消し線追記
test
CHANGED
@@ -14,11 +14,11 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
ソート部分とは関係ないですがstd::vectorのpush_backメソッドは遅いので
|
17
|
+
~~ソート部分とは関係ないですがstd::vectorのpush_backメソッドは遅いので
|
18
18
|
|
19
19
|
予めサイズが決まっているのならpush_backは使わずに
|
20
20
|
|
21
|
-
最初にすべてのメモリを確保して使ったほうが良いかもしれません。
|
21
|
+
最初にすべてのメモリを確保して使ったほうが良いかもしれません。~~
|
22
22
|
|
23
23
|
|
24
24
|
|
9
wandboxの方のvectorのサイズが大きすぎるので修正
test
CHANGED
@@ -162,4 +162,4 @@
|
|
162
162
|
|
163
163
|
```
|
164
164
|
|
165
|
-
[wandboxで実行](https://wandbox.org/permlink/
|
165
|
+
[wandboxで実行](https://wandbox.org/permlink/ouCBvW5yCannhrI6)
|
8
wandboxの方も修正
test
CHANGED
@@ -162,4 +162,4 @@
|
|
162
162
|
|
163
163
|
```
|
164
164
|
|
165
|
-
[wandboxで実行](https://wandbox.org/permlink/
|
165
|
+
[wandboxで実行](https://wandbox.org/permlink/KKLWxHOjMXCh6gwS)
|
7
コードの不備修正
test
CHANGED
@@ -36,7 +36,7 @@
|
|
36
36
|
|
37
37
|
//
|
38
38
|
|
39
|
-
//
|
39
|
+
// C2P構造体
|
40
40
|
|
41
41
|
//
|
42
42
|
|
@@ -44,7 +44,7 @@
|
|
44
44
|
|
45
45
|
{
|
46
46
|
|
47
|
-
|
47
|
+
int cx;
|
48
48
|
|
49
49
|
int cy;
|
50
50
|
|
@@ -52,13 +52,31 @@
|
|
52
52
|
|
53
53
|
int py;
|
54
54
|
|
55
|
+
|
56
|
+
|
57
|
+
C2P(int camera_x, int camera_y, int proj_x, int proj_y)
|
58
|
+
|
59
|
+
{
|
60
|
+
|
61
|
+
cx = camera_x;
|
62
|
+
|
63
|
+
cy = camera_y;
|
64
|
+
|
65
|
+
px = proj_x;
|
66
|
+
|
67
|
+
py = proj_y;
|
68
|
+
|
69
|
+
}
|
70
|
+
|
71
|
+
|
72
|
+
|
55
73
|
};
|
56
74
|
|
57
75
|
|
58
76
|
|
59
77
|
//
|
60
78
|
|
61
|
-
//
|
79
|
+
// C2Pオブジェクトの標準出力用演算子のオーバーライド
|
62
80
|
|
63
81
|
//
|
64
82
|
|
@@ -66,17 +84,17 @@
|
|
66
84
|
|
67
85
|
{
|
68
86
|
|
69
|
-
|
87
|
+
os << "---------------------------------" << std::endl;
|
70
88
|
|
71
|
-
|
89
|
+
os << "cy:" << c2p.cy << std::endl;
|
72
90
|
|
73
|
-
|
91
|
+
os << "cx:" << c2p.cx << std::endl;
|
74
92
|
|
75
|
-
|
93
|
+
os << "py:" << c2p.py << std::endl;
|
76
94
|
|
77
|
-
|
95
|
+
os << "px:" << c2p.px;
|
78
96
|
|
79
|
-
|
97
|
+
return os;
|
80
98
|
|
81
99
|
}
|
82
100
|
|
@@ -84,39 +102,27 @@
|
|
84
102
|
|
85
103
|
//
|
86
104
|
|
87
|
-
//
|
105
|
+
// C2Pの初期値生成関数
|
88
106
|
|
89
107
|
//
|
90
108
|
|
91
|
-
std::vector<C2P> c2p
|
109
|
+
std::vector<C2P> c2pList_factry(const std::size_t size_x, const std::size_t size_y)
|
92
110
|
|
93
111
|
{
|
94
112
|
|
95
|
-
|
113
|
+
auto result = std::vector<C2P>();
|
96
114
|
|
97
|
-
|
115
|
+
result.reserve(size_x * size_y);
|
98
116
|
|
99
|
-
|
100
117
|
|
101
|
-
for(std::size_t x = 0; x < size_x; x++) for(std::size_t y = 0; y < size_y; y++)
|
102
118
|
|
103
|
-
|
119
|
+
for(std::size_t x = 0; x < size_x; x++) for(std::size_t y = 0; y < size_y; y++)
|
104
120
|
|
105
|
-
|
121
|
+
result.push_back(C2P(x, y, rand() % 100, rand() % 100));
|
106
122
|
|
107
|
-
result[index].cx = x;
|
108
123
|
|
109
|
-
result[index].cy = y;
|
110
124
|
|
111
|
-
result[index].px = rand() % 100;
|
112
|
-
|
113
|
-
result[index].py = rand() % 100;
|
114
|
-
|
115
|
-
}
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
125
|
+
return result;
|
120
126
|
|
121
127
|
}
|
122
128
|
|
@@ -124,7 +130,7 @@
|
|
124
130
|
|
125
131
|
//
|
126
132
|
|
127
|
-
//
|
133
|
+
// main関数
|
128
134
|
|
129
135
|
//
|
130
136
|
|
@@ -132,25 +138,25 @@
|
|
132
138
|
|
133
139
|
{
|
134
140
|
|
135
|
-
|
141
|
+
auto c2p_list = c2pList_factry(100, 200);
|
136
142
|
|
137
143
|
|
138
144
|
|
139
|
-
|
145
|
+
std::sort(c2p_list.begin(), c2p_list.end(), [](const C2P& c2p_1, const C2P& c2p_2)
|
140
146
|
|
141
147
|
{
|
142
148
|
|
143
|
-
|
149
|
+
return c2p_1.py != c2p_2.py ? c2p_1.py < c2p_2.py : c2p_1.px < c2p_2.px;
|
144
150
|
|
145
151
|
});
|
146
152
|
|
147
|
-
|
148
153
|
|
154
|
+
|
149
|
-
|
155
|
+
for(auto&& i:c2p_list) std::cout << i << std::endl;
|
150
156
|
|
151
157
|
|
152
158
|
|
153
|
-
|
159
|
+
return 0;
|
154
160
|
|
155
161
|
}
|
156
162
|
|
6
ソート方向が逆だったので再び修正
test
CHANGED
@@ -140,7 +140,7 @@
|
|
140
140
|
|
141
141
|
{
|
142
142
|
|
143
|
-
return c2p_1.py != c2p_2.py ? c2p_1.py
|
143
|
+
return c2p_1.py != c2p_2.py ? c2p_1.py < c2p_2.py : c2p_1.px < c2p_2.px;
|
144
144
|
|
145
145
|
});
|
146
146
|
|
@@ -156,4 +156,4 @@
|
|
156
156
|
|
157
157
|
```
|
158
158
|
|
159
|
-
[wandboxで実行](https://wandbox.org/permlink/
|
159
|
+
[wandboxで実行](https://wandbox.org/permlink/xfWKco8WS3RLuTKx)
|
5
c2p_list_factory関数名の誤記修正
test
CHANGED
@@ -88,7 +88,7 @@
|
|
88
88
|
|
89
89
|
//
|
90
90
|
|
91
|
-
std::vector<C2P> c2p
|
91
|
+
std::vector<C2P> c2p_list_factory(const std::size_t size_x, const std::size_t size_y)
|
92
92
|
|
93
93
|
{
|
94
94
|
|
@@ -132,7 +132,7 @@
|
|
132
132
|
|
133
133
|
{
|
134
134
|
|
135
|
-
auto c2p_list = c2p
|
135
|
+
auto c2p_list = c2p_list_factory(5, 5);
|
136
136
|
|
137
137
|
|
138
138
|
|
@@ -156,4 +156,4 @@
|
|
156
156
|
|
157
157
|
```
|
158
158
|
|
159
|
-
[wandboxで実行](https://wandbox.org/permlink/
|
159
|
+
[wandboxで実行](https://wandbox.org/permlink/v8eaMnfC4Cw1WtTb)
|
4
誤記修正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
第三引数のラムダ式内のようにpyの比較なのかpxの比較なのか
|
8
8
|
|
9
|
-
if文や三演算子で分岐してやればコードを簡略化できます。
|
9
|
+
if文や三項演算子で分岐してやればコードを簡略化できます。
|
10
10
|
|
11
11
|
|
12
12
|
|
3
誤記修正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
第三引数のラムダ式内のようにpyの比較なのかpxの比較なのか
|
8
8
|
|
9
|
-
if文や
|
9
|
+
if文や三演算子で分岐してやればコードを簡略化できます。
|
10
10
|
|
11
11
|
|
12
12
|
|
2
wandboxのurl追記
test
CHANGED
@@ -155,3 +155,5 @@
|
|
155
155
|
}
|
156
156
|
|
157
157
|
```
|
158
|
+
|
159
|
+
[wandboxで実行](https://wandbox.org/permlink/KPLfYeMCDNQG7TvN)
|
1
ソート方向が逆だったので修正
test
CHANGED
@@ -140,7 +140,7 @@
|
|
140
140
|
|
141
141
|
{
|
142
142
|
|
143
|
-
return c2p_1.py != c2p_2.py ? c2p_1.py
|
143
|
+
return c2p_1.py != c2p_2.py ? c2p_1.py > c2p_2.py : c2p_1.px > c2p_2.px;
|
144
144
|
|
145
145
|
});
|
146
146
|
|