質問編集履歴

1

解決後のコードを載せました。

2021/06/10 06:18

投稿

MomenToufu
MomenToufu

スコア10

test CHANGED
File without changes
test CHANGED
@@ -209,3 +209,195 @@
209
209
  -572662307 , -572662307 , 0103E090
210
210
 
211
211
  ```
212
+
213
+
214
+
215
+ ### 解決後のソースコード
216
+
217
+ 次の様に変更することで解決しました。
218
+
219
+
220
+
221
+ ```C++
222
+
223
+ #include <vector>
224
+
225
+ #include <iostream>
226
+
227
+ #include <string>
228
+
229
+
230
+
231
+ class data{
232
+
233
+ public:
234
+
235
+ int ID;
236
+
237
+ int Num;
238
+
239
+
240
+
241
+ data(int a){
242
+
243
+ ID = a;
244
+
245
+ Num = a + 100;
246
+
247
+ }
248
+
249
+ };
250
+
251
+
252
+
253
+
254
+
255
+ int DispVector(std::vector<data>& a , std::string title) {
256
+
257
+ std::cout << std::endl;
258
+
259
+ std::cout << title << std::endl;
260
+
261
+ for (size_t s = 0; s < a.size();++s) {
262
+
263
+ std::cout << " " << a[s].ID << " , " << a[s].Num << " , " << &a[s] << std::endl;
264
+
265
+ }
266
+
267
+ return 0;
268
+
269
+ }
270
+
271
+ int DispVector(std::vector<data*>& a, std::string title){
272
+
273
+ std::cout << std::endl;
274
+
275
+ std::cout << title << std::endl;
276
+
277
+ for (size_t s = 0; s < a.size(); ++s){
278
+
279
+ std::cout << " " << a[s]->ID << " , " << a[s]->Num << " , " << a[s] << std::endl;
280
+
281
+ }
282
+
283
+ return 0;
284
+
285
+ }
286
+
287
+ int DispVector(std::vector<std::unique_ptr<data>>& a, std::string title){
288
+
289
+ std::cout << std::endl;
290
+
291
+ std::cout << title << std::endl;
292
+
293
+ for (size_t s = 0; s < a.size(); ++s){
294
+
295
+ std::cout << " " << a[s]->ID << " , " << a[s]->Num << " , " << a[s] << std::endl;
296
+
297
+ }
298
+
299
+ return 0;
300
+
301
+ }
302
+
303
+
304
+
305
+
306
+
307
+ int main() {
308
+
309
+ std::vector<std::unique_ptr<data>> Datas;
310
+
311
+ std::vector<data*> PickUp1;
312
+
313
+
314
+
315
+ // Data 生成
316
+
317
+ for(int a = 0; a < 2 ; ++a){
318
+
319
+ Datas.push_back(std::make_unique<data>(a));
320
+
321
+ }
322
+
323
+ // PickUp生成(ある任意の操作によって取得)
324
+
325
+ for (size_t a = 0; a < Datas.size();++a){
326
+
327
+ PickUp1.push_back(Datas[a].get());
328
+
329
+ }
330
+
331
+
332
+
333
+ DispVector(Datas,"Datas の初期値");
334
+
335
+ DispVector(PickUp1, "ピックアップしたアドレスから値を参照");
336
+
337
+
338
+
339
+ for (int a = 2; a < 4; ++a){
340
+
341
+ Datas.push_back(std::make_unique<data>(a));
342
+
343
+ }
344
+
345
+
346
+
347
+ DispVector(Datas, "Datas 追加後の値");
348
+
349
+ DispVector(PickUp1, "初期にピックアップしたアドレスから値を参照");
350
+
351
+
352
+
353
+ return 0;
354
+
355
+ }
356
+
357
+ ```
358
+
359
+
360
+
361
+ 以下がコンソールの表示内容になります。
362
+
363
+
364
+
365
+ ```
366
+
367
+
368
+
369
+ Datas の初期値
370
+
371
+ 0 , 100 , 00E1DFF0
372
+
373
+ 1 , 101 , 00E1DFB8
374
+
375
+
376
+
377
+ ピックアップしたアドレスから値を参照
378
+
379
+ 0 , 100 , 00E1DFF0
380
+
381
+ 1 , 101 , 00E1DFB8
382
+
383
+
384
+
385
+ Datas 追加後の値
386
+
387
+ 0 , 100 , 00E1DFF0
388
+
389
+ 1 , 101 , 00E1DFB8
390
+
391
+ 2 , 102 , 00E1DEA0
392
+
393
+ 3 , 103 , 00E1E338
394
+
395
+
396
+
397
+ 初期にピックアップしたアドレスから値を参照
398
+
399
+ 0 , 100 , 00E1DFF0
400
+
401
+ 1 , 101 , 00E1DFB8
402
+
403
+ ```