回答編集履歴

11

vectorのpush_backにまつわる部分修正

2020/12/05 23:34

投稿

退会済みユーザー
test CHANGED
@@ -14,11 +14,15 @@
14
14
 
15
15
 
16
16
 
17
- ~~ソート部分とは関係ないですがstd::vectorのpush_backメソッドは遅いの
17
+ vectorのreserveメソッドを使わずpush_backで
18
18
 
19
- 予めサイズが決まっているならpush_backは使わずに
19
+ 何度もメモリの確保を行うと遅くなってしまう
20
20
 
21
+ サイズがあらかじめ決まっているのなら
22
+
23
+ 最初にreserveでメモリを全て確保してから
24
+
21
- 最初にすべてのメモリ確保して使ったほういかもしれません~~
25
+ push_backで要素追加していく方好ましいかと思われま
22
26
 
23
27
 
24
28
 

10

打消し線追記

2020/12/05 23:34

投稿

退会済みユーザー
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のサイズが大きすぎるので修正

2020/12/05 23:22

投稿

退会済みユーザー
test CHANGED
@@ -162,4 +162,4 @@
162
162
 
163
163
  ```
164
164
 
165
- [wandboxで実行](https://wandbox.org/permlink/KKLWxHOjMXCh6gwS)
165
+ [wandboxで実行](https://wandbox.org/permlink/ouCBvW5yCannhrI6)

8

wandboxの方も修正

2020/12/05 23:11

投稿

退会済みユーザー
test CHANGED
@@ -162,4 +162,4 @@
162
162
 
163
163
  ```
164
164
 
165
- [wandboxで実行](https://wandbox.org/permlink/xfWKco8WS3RLuTKx)
165
+ [wandboxで実行](https://wandbox.org/permlink/KKLWxHOjMXCh6gwS)

7

コードの不備修正

2020/12/05 22:57

投稿

退会済みユーザー
test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  //
38
38
 
39
- // C2P構造体
39
+ // C2P構造体
40
40
 
41
41
  //
42
42
 
@@ -44,7 +44,7 @@
44
44
 
45
45
  {
46
46
 
47
- int cx;
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
- // C2Pオブジェクトの標準出力用演算子のオーバーライド
79
+ // C2Pオブジェクトの標準出力用演算子のオーバーライド
62
80
 
63
81
  //
64
82
 
@@ -66,17 +84,17 @@
66
84
 
67
85
  {
68
86
 
69
- os << "---------------------------------" << std::endl;
87
+ os << "---------------------------------" << std::endl;
70
88
 
71
- os << "cy:" << c2p.cy << std::endl;
89
+ os << "cy:" << c2p.cy << std::endl;
72
90
 
73
- os << "cx:" << c2p.cx << std::endl;
91
+ os << "cx:" << c2p.cx << std::endl;
74
92
 
75
- os << "py:" << c2p.py << std::endl;
93
+ os << "py:" << c2p.py << std::endl;
76
94
 
77
- os << "px:" << c2p.px;
95
+ os << "px:" << c2p.px;
78
96
 
79
- return os;
97
+ return os;
80
98
 
81
99
  }
82
100
 
@@ -84,39 +102,27 @@
84
102
 
85
103
  //
86
104
 
87
- // C2Pの初期値生成関数
105
+ // C2Pの初期値生成関数
88
106
 
89
107
  //
90
108
 
91
- std::vector<C2P> c2p_list_factory(const std::size_t size_x, const std::size_t size_y)
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
- auto result = std::vector<C2P>(size_x * size_y);
113
+ auto result = std::vector<C2P>();
96
114
 
97
- std::size_t index;
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
- index = x + size_x * y;
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
- return result;
125
+ return result;
120
126
 
121
127
  }
122
128
 
@@ -124,7 +130,7 @@
124
130
 
125
131
  //
126
132
 
127
- // main関数
133
+ // main関数
128
134
 
129
135
  //
130
136
 
@@ -132,25 +138,25 @@
132
138
 
133
139
  {
134
140
 
135
- auto c2p_list = c2p_list_factory(5, 5);
141
+ auto c2p_list = c2pList_factry(100, 200);
136
142
 
137
143
 
138
144
 
139
- std::sort(c2p_list.begin(), c2p_list.end(), [](const C2P& c2p_1, const C2P& c2p_2)
145
+ std::sort(c2p_list.begin(), c2p_list.end(), [](const C2P& c2p_1, const C2P& c2p_2)
140
146
 
141
147
  {
142
148
 
143
- return c2p_1.py != c2p_2.py ? c2p_1.py < c2p_2.py : c2p_1.px < c2p_2.px;
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
- for(auto&& i:c2p_list) std::cout << i << std::endl;
155
+ for(auto&& i:c2p_list) std::cout << i << std::endl;
150
156
 
151
157
 
152
158
 
153
- return 0;
159
+ return 0;
154
160
 
155
161
  }
156
162
 

6

ソート方向が逆だったので再び修正

2020/12/05 22:45

投稿

退会済みユーザー
test CHANGED
@@ -140,7 +140,7 @@
140
140
 
141
141
  {
142
142
 
143
- return c2p_1.py != c2p_2.py ? c2p_1.py > c2p_2.py : c2p_1.px > c2p_2.px;
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/v8eaMnfC4Cw1WtTb)
159
+ [wandboxで実行](https://wandbox.org/permlink/xfWKco8WS3RLuTKx)

5

c2p_list_factory関数名の誤記修正

2020/12/05 20:30

投稿

退会済みユーザー
test CHANGED
@@ -88,7 +88,7 @@
88
88
 
89
89
  //
90
90
 
91
- std::vector<C2P> c2pList_factry(const std::size_t size_x, const std::size_t size_y)
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 = c2pList_factry(5, 5);
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/KPLfYeMCDNQG7TvN)
159
+ [wandboxで実行](https://wandbox.org/permlink/v8eaMnfC4Cw1WtTb)

4

誤記修正

2020/12/05 20:26

投稿

退会済みユーザー
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

誤記修正

2020/12/05 20:22

投稿

退会済みユーザー
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追記

2020/12/05 20:21

投稿

退会済みユーザー
test CHANGED
@@ -155,3 +155,5 @@
155
155
  }
156
156
 
157
157
  ```
158
+
159
+ [wandboxで実行](https://wandbox.org/permlink/KPLfYeMCDNQG7TvN)

1

ソート方向が逆だったので修正

2020/12/05 20:19

投稿

退会済みユーザー
test CHANGED
@@ -140,7 +140,7 @@
140
140
 
141
141
  {
142
142
 
143
- return c2p_1.py != c2p_2.py ? c2p_1.py < c2p_2.py : c2p_1.px < c2p_2.px;
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